//递归
int Btdepth(BiTree T) {
if (T = NULL)
return 0;
ldep = Btdepth(T->lchild);
rdep = Btdepth(T->rchild);
if (ldep > rdep) {
return ldep + 1;
}else
{
return rdep + 1;
}
}
//非递归层次遍历
int Btdepth(BiTree T) {
if (!T) return 0; //树空,高度为0
int front = -1, rear = -1;
int last = 0, level = 0; //last指向下一层第一个节点的位置
BiTree Q[MaxSize]; //设置队列Q,元素是二叉树节点指针且容量足够
Q[++rear] = T; //根节点入队
BiTree p;
while (front < rear) { //队列不空,则循环
p = Q[++front];
if (p->lchild)
Q[++rear] = p->lchild;
if (p->rchild)
Q[++rear] = p->rchild;
if (front == last) { //处理该层的最右节点
level++; //层数加1
last = rear; //last指向下层
}
}
return level;
}