leetcode 102 二叉樹的層序遍歷

2021-10-05 11:33:31 字數 1873 閱讀 4773

中等

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

示例

二叉樹:[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回其層次遍歷結果:

[

[3],

[9,20],

[15,7]

]

借助佇列(列表)

bfsqueue中儲存一層的節點

當掃瞄queue中節點時,一直pop當前層的節點,然後加入下一層的節點

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

ifnot root:

return

res =

queue =

while queue:

temp =

# temp為當前層節點值

for i in

range

(len

(queue)):

# 掃瞄這一層的節點

# 然後將這一層的數值加入temp,並將各節點的孩子加入佇列

node = queue.pop(0)

# 取出queue的第乙個元素

if node.left:

if node.right:

return res

dfs

深度優先遍歷,在解集的每一層解中依次加上節點值

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

__init__

(self)

: self.res =

deflevelorder

(self, root: treenode)

-> list[list[

int]]:

self.add_node(root,0)

return self.res

defadd_node

(self, root, level):if

not root:

return

# 新的一層,增加該層的解

iflen

(self.res)

== level:

)# 在對應的層加入節點值

self.res[level]

# 加入當前節點的左右孩子加入下一層的空間

self.add_node(root.left, level+1)

self.add_node(root.right, level+

1)

LeetCode 102 二叉樹的遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 返回其層次遍歷結果 如下 definition for a binary tree node.public class treenode public class solution list res new ...

LeetCode 102 二叉樹的層次遍歷

題目鏈結 題目描述 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 解決方法 廣度優先 層次 遍歷,使用佇列實現 具體思路 在訪問了乙個節點之後...

LeetCode 102 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其層次遍歷結果 3 9,20 15,7 此題需要將各個層的節點分別儲存到不同的陣列中。所以在while迴圈中,加了乙個for迴圈,迴圈次數...