//任务:用非递归算法计算二叉树的高度
//算法思想:使用层次遍历,利用队列指针,设置一个专门的指针last专门指向一层元素的最后一个元素
//将一层中最后一个元素之前的元素依次出队,并将每个元素的孩子结点入队,那么当一层之中最后一个结点
//出队之时,这一层所有的孩子结点已经全部入队,即此时的尾指针只想了下一层最后一个结点之后,
//我们将last指向尾指针,以代表本层遍历结束
int Btdepth(BiTree& T)
{
int last,level=0;
SqQueue Q; InitQueue(Q);
BiTree p = T;
EnQueue(Q,T);
last = Q.rear;
while (!IsEmpty(Q))
{
DeQueue(Q,p);
if (p->lchild)
EnQueue(Q, p->lchild);
if (p->rchild)
EnQueue(Q, p->rchild);
if (Q.front == last)
{
level++;
last = Q.rear;
}
}
return level;
}