數據結構筆記——二叉樹的層序遍歷

目錄

一、二叉樹的層序遍歷

二、代碼實現

三、總結

一、二叉樹的層序遍歷

算法思想:

①初始化一個輔助隊列

②根結點入隊

③若隊列非空,則隊頭結點出隊,訪問該結點,將其左右孩子插入隊尾(如果有的話)

④重複③直至隊列爲空

二、代碼實現

//層序遍歷
void LevelOrder(BiTree T){
    LinkQueue Q;
    InitQueue(Q);    //初始化輔助隊列
    BiTree p;
    EnQueue(Q,T);        //將根結點入隊
    while(!IsEmpty(Q)){    //隊列不空則循環
        DeQueue(Q,p);        //隊頭結點出隊
        visit(p);        //訪問出隊結點
        if(p->lchild != NULL)
            EnQueue(Q,p->lchild);    //左孩子入隊
        if(p->rchild != NULL)
            EnQueue(Q,p->rchild);    //右孩子入隊
    }
}

//二叉樹的結點(鏈式存儲)
typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,rchild;
}

//鏈式隊列結點
typedef struct LinkNode{
    BiTNode * data;    //存指針而不是結點
    struct LinkNode *next;
}

typedef struct{
    LinkNode *front,*rear;
}LinkQueue;

三、總結

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