假设二叉树采用二叉链表存储结构,设计一个非递归算法求二叉树的高度。
int depth(BiTree T){
if(!T){
return 0;
}
int front=-1,rear=-1;
int last=0,level=0;
BiTree Q[MaxSize];
Q[++rear]=T;
while(front<rear){
p=Q[++front];
if(p->lchild!=NULL)
Q[++rear]=p->lchild;
if(p->rchild!=NULL)
Q[++rear]=p->rchild;
if(front==last){//处理该层最右结点
level++;
last=rear;
//last指向下一层的最后一个元素
//last指向当前队列的最后一个元素
}
}
return level;
}
这个算法思路和代码太妙了