二叉樹的層序遍歷演算法

2021-10-10 18:32:20 字數 1304 閱讀 2584

題目描述:

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

例如:給定的二叉樹是,

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

[[3],

[9,20],

[15,7]

]示例:

輸入:輸出,,}

知識點:

1.實現list介面:

linkedlist:低層資料結構是乙個雙向鍊錶,方便插入和刪除操作,易於隨機訪問。

addlast:是liinkedlist在表尾新增元素。

pollfirst:是liinkedlist在表頭刪除元素

arraylist:底層資料結構是順序表,儲存陣列。

演算法思想:

首先判斷root是否為空,如果為空則返回乙個空陣列

如果非空,定義乙個linkedlist物件stack

再定義乙個arraylist物件al用來存放arraylist型別

把root新增到stack表尾因為他要第乙個輸出,所以用尾新增法

如果鍊錶非空則再定義乙個arraylist物件,list

while迴圈(stack.size()>0)

定義樹節點tmp存放stack檢索刪除的第乙個節點

把tmp的值新增到list,然後判斷tmp左右孩子是否為空

若非空則把左右孩子新增到stack中

把list新增到al中

最後輸出al

public arraylist

> levelorder (treenode root)

linkedlist

stack =

newlinkedlist

<

>()

; arraylist

> al =

newarraylist

<

>()

; stack.

addlast

(root)

;while

(!stack.

isempty()

)//al.

add(

newarraylist

<

>

(list));

}return al;

// write code here

}

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

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