데이터 구조 트 리 연습 문제 (3)


프로 그래 밍, 이 진 트 리 가 완전히 이 진 트 리 인지 판단 합 니 다.
기본 사상: 대열 을 이용 하여 위 에서 아래로, 왼쪽 에서 오른쪽으로 층 차 를 옮 겨 다 닐 수 있 습 니 다. 처음으로 잎 이 맺 히 거나 오른쪽 아이 가 없 으 면 뒤쪽 은 모두 잎 이 맺 혀 야 합 니 다.그러면 서 '어떤 결점 에 왼쪽 자녀 가 없 으 면 오른쪽 자녀 가 있어 서 는 안 된다' 는 원칙 을 두루 활용 해 판단 했다.
코드:
int JudgeComplete(BiTree bt)
{
	int tag=0;
	BiTree p=bt,Q[];
	if(p==NULL)
	{
		return 1;
	}
	QueueInit(Q);
	QueueIn(Q,p)
	while(!QueueEmpty(Q))
	{
		p=QueueOut(Q);
		if(p->lchild&&!tag)
		{
			QueueIn(Q,p->lchild);
		}
		else
		{
			if(p->lchild)
			{
				return 0;
			}
			else
			{
				tag=1;
			}
		}
		if(p->rchild&&!tag)
		{
			QueueIn(Q,p->rchild);
		}
		else
		{
			if(p->rchild)
			{
				return 0;
			}
			else
			{
				tag=1;
			}
		}
	}
}

좋은 웹페이지 즐겨찾기