算法思想:
A:front=rear=0,last=1
A出队后[B(1),C(2)],front=1=last,level++,last更新为2
等front再次等于last的时候,第二层的结点就遍历完了,level再次++
void THeigh(TNode* p)
{
Queue Q;
InitQueue(Q);
int last=1;
//这里王道写的是last=0,因为它的front和rear是从-1开始的,而我这里是从0开始的。
int level=0;
EnQueue(Q,p);
while(QueueEmpty(Q)!=true)
{
DeQueue(Q,p);
if(p->lchild!=NULL)
EnQueue(Q,p->lchild);
if(p->rchild!=NULL)
EnQueue(Q,p->rchild);
//if(Q.front==Q.rear)
if(Q.front==last)
{
level++;
last=Q.rear;
}
}
printf("%d",level);
}
王道课后习题4.3.5:非递归算法求二叉树的高度
最新推荐文章于 2022-11-22 21:37:28 发布