力扣 二叉樹的層序遍歷

2021-10-07 17:58:14 字數 1709 閱讀 6496

給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。

思路:這道題要求將樹每一層的值存乙個列表,所有層的列表存乙個列表中

所以使用bfs(廣度優先),逐層遍歷(同時確定遍歷的層數)是可行的

同時dfs(深度優先),可以使用字典記錄 層數:[數值]。也是可行的

1.bfs模板

遍歷時不用明確層數

while queue:

cur=queue.popleft(

)'''取出節點'''

'''對此節點遍歷'''

if cur.left:

if cur.right:

'''下一層非空結點加入佇列'''

遍歷時要求明確層數(每次while迴圈,一層個結點)

while queue:

size=

len(queue)

for i in

range

(size)

:'''遍歷本層'''

cur=queue.popleft(

)'''取出節點'''

'''對此節點遍歷'''

if cur.left:

if cur.right:

'''下一層非空結點加入佇列'''

**

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

queue = collections.deque(

) lt=

ifnot root:

return

while queue:

size=

len(queue)

l=while size:

size-=

1 cur=queue.popleft(

)if cur.left:

if cur.right:

if l!=

:return lt

2.dfs**

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

dt=defdg

(root,n,dt):if

not root:

return

ifnot dt.get(n)

: dt[n]

=[root.val]

else

: dt[n]

dg(root.left,n+

1,dt)

dg(root.right,n+

1,dt)

dg(root,

1,dt)

return

list

(dt.values(

))

力扣102 二叉樹的層序遍歷

最近在學習資料結構樹的相關知識,於是就去力扣刷題。我是一枚蒟蒻,一天時間琢磨出來兩題 慚愧 現在分享一下解題過程,大佬勿噴 給你乙個二叉樹,請你返回其按層序遍歷得到的節點值。即逐層地,從左到右訪問所有節點 示例 二叉樹 3,9,20,null,null,15,7 直接上 definition for...

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

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