層序遍歷二叉樹

2021-09-29 09:37:22 字數 643 閱讀 3618

建立乙個佇列輔助進行遍歷

先把root插入佇列

迴圈取隊首元素,訪問這個元素

把當前這個隊首元素左子樹和右子樹都插入佇列中

重複執行3

遍歷到隊列為空就結束了

public

void

levelorder

(treenode root)

queue

queue =

newlinkedlist()

; queue.

offer

(root)

;while

(!queue.

isempty()

)if(cur.right != null)

}}

我們知道佇列是先進先出,我們利用佇列來實現,

首先將根節點放入佇列,佇列就有這棵樹的根節點了

將這個隊首取出(poll)並訪問它,

將它的左右子節點(注意這裡只能是兒子,才是實現將下一層插入佇列)插入佇列

此時左子節點就在隊首了,右子節點在他的後面

緊接著就是迴圈上面第三行的事情了,知道容器為空。

就能實現一層一層的子節點從左到右進入佇列,當然取出的時候也是從左到右啦。

yylsglj

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

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 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...