二叉樹的創建及遍歷

二叉樹的創建

前序遍歷

中序遍歷

後序遍歷

層序遍歷

二叉樹的層序遍歷的實現還是比較簡單的,由於其層級的關係,很明顯要用到隊列來輔助實現,主要是從左向右,自上而下,依次將二叉樹的各節點入隊,這樣便可以保證輸出的順序是層序排列的。下面是算法的實現思想:

先將樹的根節點入隊,

如果隊列不空,則進入循環

{

  將隊首元素出隊,並輸出它;

  如果該隊首元素有左孩子,則將其左孩子入隊;

  如果該隊首元素有右孩子,則將其右孩子入隊

}

C語言代碼如下:

void LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType))  
{  
    //Visit是對節點操作的應用函數,  
    //在這裏,對每個數據元素調用函數Visit,也即是遍歷了該節點     
    SqQueue q;  
    QElemType p;  
    if(T)  
    {  
        InitQueue(&q);  
        EnQueue(&q,T);  
        while(!QueueEmpty(q))  
        {  
            DeQueue(&q,&p);  
            Visit(p->data);  
            if(p->lchild!=NULL) EnQueue(&q,p->lchild);  
            if(p->rchild!=NULL) EnQueue(&q,p->rchild);  
        }  
        printf("/n");  
    }  
}  
發佈了107 篇原創文章 · 獲贊 22 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章