二叉樹遍歷-非遞歸-Cpp代碼-層序遍歷

#include<iostream>
#include<queue>
using namespace std;  

//定義二叉樹結點鏈式存儲結構
struct BiTNode{
        int data;//數據域
        struct BiTNode *lchild,*rchild;//左右孩子指針
}*BiTree;

//層序遍歷函數聲明
int LevelOrder(struct BiTNode *BiTree);

int main()  
{
        //初始化結點
        struct BiTNode node1,node2,node3,node4,node5,node6,node7;
        node1=(struct BiTNode){1,&node2,&node3};
        node2=(struct BiTNode){2,&node4,&node5};
        node3=(struct BiTNode){3,&node6,&node7};
        node4=(struct BiTNode){4,NULL,NULL};
        node5=(struct BiTNode){5,NULL,NULL};
        node6=(struct BiTNode){6,NULL,NULL};
        node7=(struct BiTNode){7,NULL,NULL};

        //建樹
        BiTree=&node1;

        LevelOrder(BiTree);
        cout << endl;
        return 0;  
}

//層序遍歷-非遞歸實現
int LevelOrder(struct BiTNode *BiTree){
        queue<struct BiTNode*> q;
        struct BiTNode *p;//遍歷指針
        p=BiTree;
        q.push(p);
        if(BiTree==NULL){return 0;}
        while(!q.empty()){
                p=q.front();
                cout << p->data << " ";
                q.pop();
                if(p->lchild){
                        q.push(p->lchild);
                }
                if(p->rchild){
                        q.push(p->rchild);
                }
        }
        return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章