二叉樹層序遍歷和深化

2021-10-06 00:15:27 字數 826 閱讀 7181

題目1:給定乙個二叉樹,返回該二叉樹層序遍歷的結果,(從左到右,一層一層地遍歷)

例如:給定的二叉樹是,

3↵ / ↵ 9 20↵ / ↵ 15 7

該二叉樹層序遍歷的結果是

[↵ [3],↵ [9,20],↵ [15,7]↵]

解題思路:首先利用乙個佇列來存放每一層的樹節點,再取出逐一取出佇列中同一層的樹節點,再將該樹節點的左右節點存放到佇列中,直到隊列為空。`

public arraylist

>

levelorder

(treenode root)

lists.

add(list);}

return lists;

}

題目2:給定乙個二叉樹,返回該二叉樹的之字形層序遍歷,(從左向右,下一層從右向左,一直這樣交替)

例如:給定的二叉樹是,

3↵ / ↵ 9 20↵ / ↵ 15 7

該二叉樹之字形層序遍歷的結果是

[↵ [3],↵ [20,9],↵ [15,7]↵]

解題思路:在題目一的基礎上新增乙個方向標誌即可。

public arraylist

>

zigzaglevelorder

(treenode root)

if(p%2==

0)lists.

add(list1);}

else

lists.

add(list)

; p++;}

return lists;

}

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

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