1. 程式人生 > >非遞迴層次遍歷查二叉樹深度

非遞迴層次遍歷查二叉樹深度

#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() { }