现在的位置: 首页 > 综合 > 正文

数据结构树习题(四)

2012年10月27日 ⁄ 综合 ⁄ 共 394字 ⁄ 字号 评论关闭

 

一棵二叉树以二叉链表表示,求制定某一层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;
		}
	}
}

 

抱歉!评论已关闭.