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


한 그루 의 이 진 트 리 는 이 진 트 리 로 표시 하여 특정한 층 의 K 위의 잎 결점 의 개 수 를 정 해 야 한다.
기본 사상: 대열 구 조 를 이용 하여 층 차 를 따라 옮 겨 다 니 며 K 층 을 옮 겨 다 닐 때 잎 결점 개 수 를 기록 합 니 다.
코드:
 
int LeafKlevel(BiTree bt,int k)
{
	if(bt==NULL||k<1)
	{
		return 0;
	}
	BiTree p=bt,Q[];
	int front=0,rear=1,leaf=0;
	int last=1,level=1;
	Q[1]=p;
	while(front<=rear)
	{
		p=Q[++front];
		if(level==k&&!p->lchild&&!p->rchild)
		{
			leaf++;
		}
		if(p->lchild)
		{
			Q[++rear]=p->lchild;
		}
		if(p->rchild)
		{
			Q[++rear]=p->rchild;
		}
		if(front==last)
		{
			level++;
			last=rear;
		}
		if(level>k)
		{
			return leaf;
		}
	}
}

좋은 웹페이지 즐겨찾기