非遞迴層次遍歷查二叉樹深度
阿新 • • 發佈:2019-02-17
#include<stdio.h>
typedef struct BiTree{
int data;
struct BiTree *lchild,*rchild;
}BiTNode,*BiTree;
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) //隊不空,則迴圈
{
4 p = Q[++front]; //佇列元素出隊,即正在訪問的結點
if(p->lchild)
{
Q[++rear] = p->lchild; //左孩子入隊
}
if(p->rchild)
{
Q[++rear] = p->rchild; //右孩子入隊
}
if(front == last) //處理該層最右結點
{
level++; //層數加一
last = rear; //last指向下一層
}
}
return level;
}
int main()
{
}