有人懂得怎么求二叉树结点个数与其高度吗?

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:07:44
请写好一点哈,弟刚开始学,在线等~~~

找到了个层次遍历二叉树的函数。程序如下,我做了些修改,
注:
leaves:为结点个数
level为高度(即层次)

void bianli4 (struct btnode *bt) /* 按层次遍历 */
{
struct btnode *V[SIZE],*p;
int front=0,area=0,leaves=0,level=0,leaf=0;
if (bt!=NULL)
{
area++;leaves++;level++;
V[area]=bt;
area++; V[area]=NULL;//每层每层结束后加个NULL作标记
while (front<area)
{
front++;
p=V[front];
if(p!=NULL)
{
leaf++;//每层叶结点计数
printf("%d ",p->data);
if(p->lchild!=NULL) {area++;leaves++;V[area]=p->lchild;}
if(p->rchild!=NULL) {area++;leaves++;V[area]=p->rchild;}
}
else
{
if(leaf==0)break;//如果某层没有一个叶结点则表明遍历完毕
leaf=0;level++;//清空每层的叶结点计数,层次加1
area++; V[area]=NULL;//每层结束后加个NULL作标记
}
}
}

}

遍历吧
二叉分满二