题目描述:假设二叉树采用二叉链表存储结构,设计一个非递归算法求二叉树的高度。
分析: 求二叉树的高度可以考虑使用层次遍历,使用一个指针指向当前层的最后一个结点。
int height(BiTree T){
BiTree Q[MaxSize];
int front = -1,rear = -1;
int last = 0,high = 0;
BiTNode *p;
Q.[++rear] = T;
while(front < rear){
p = Q[++front];
if(p->lchild)
Q.[++rear] = p->lchild;
if(p->rchild)
Q.[++rear] = p->rchild;
if(last == front){
high++;
last = rear;
}
}
return high;
}
本题要求使用非递归算法,但是此题也可以使用递归算法来做
int height2(BiTree T){
if(T == NULL)
return 0;
lh = height2(T->lchild);
rh = height2(T->rchild);
return lh > rh ? lh + 1 : rh + 1;
}