二叉樹的層序遍歷

2021-10-02 04:31:48 字數 1006 閱讀 4280

二叉樹的層序遍歷是按層次來遍歷,主要是按從上往下,從左往右的順序(故下圖的層序遍歷結果為abcdef),需要借助佇列來實現。

那麼abcdef的結果是怎麼得來的?

首先將根節點a入隊並輸出,然後分別遍歷它的左右孩子,若有左孩子,則左孩子b入隊,若有右孩子,則右孩子c入隊;此過程完成後front++,再遍歷之前根節點的左孩子b的左右孩子,先輸出b,b有左右孩子,則de入隊,再遍歷之前根節點的右孩子c的左右孩子,先輸出c,c只有左孩子,則左孩子f入隊,再看b的左孩子d,先輸出d,d沒有左右孩子,看b的右孩子e,先輸出e,e沒有左右孩子,最後看c的左右孩子,c只有左孩子f,先輸出f,f沒有左右孩子。

層序遍歷的思想:

先將根節點入隊,只要佇列不為空,進入迴圈,輸出根節點,並遍歷根節點的左右孩子,若左右孩子不為空,則入隊並輸出;

void

cengxu

(struct node*root)

front++;}

}

上圖的入隊實現過程如下:

1.a節點輸出和它的左右孩子入隊

2.b節點的輸出和它的左右孩子入隊

(此時front++後front=1)

3.c節點輸出和它的右孩子入隊(front在上次操作完成後變為2)

後續操作因為後面的節點沒有左右孩子很簡單就不畫**釋說明。

二叉樹層序遍歷 求二叉樹的層序遍歷

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...

層序遍歷二叉樹

要求 設計乙個演算法層序遍歷二叉樹 同一層從左到右訪問 我寫了乙個演算法 用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。status hierarchybitree bitree t,status visit telemtype e destroyqueue q 釋放佇列空間 return...

二叉樹層序遍歷

主要流程 確定root非空 根指標進佇列 佇列非空就一直迴圈 依次掃瞄目前佇列中所有元素 新增的不算 從佇列取出第一元素 將值放入結果vector中 判斷左右子節點非空,並依次入隊 將本次結果放入二維陣列中 如果需要按層逆序輸出的話,在這裡將二維結果倒排一下 返回二維結果 vector levelo...