LeetCode 102 二叉樹的層次遍歷

2021-09-25 06:59:56 字數 1466 閱讀 2146

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

例如:給定二叉樹:[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回其層次遍歷結果:

[

[3],

[9,20],

[15,7]

]

這道題既可以用dfs,也可以用bfs,但是bfs需要單獨劃分出來哪些是同一層的元素。
dfs:

class solution:

def seekall(self,level,root:treenode):

if root.left != none:

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

if root.right != none:

self.seekall(level+1,root.right)

def levelorder(self, root: treenode) -> list[list[int]]:

if root == none:

return

self.map_c =

self.res=

for i in range(1000):

self.seekall(0,root)

for i in self.map_c:

if i:

return self.res

bfs:

class solution:

def levelorder(self, root: treenode) -> list[list[int]]:

que=

res=

if root == none:

return

while(que != ):

length=len(que)

ans=

for i in range(length):

node=que.pop(0)

return res

在bfs中,關鍵是計算好哪些節點但是同一層的節點,用兩層迴圈,內層的迴圈只迴圈當前層次的節點的個數,

即只會將當前層次的節點出棧,不會影響下一層,正好當內層迴圈結束的時候,que佇列中只剩下下一層的所有節點。

bfs核心**段

while(que != ):

length=len(que) #先算出來每層的個數,方便下層的for迴圈控制迴圈次數。

ans=

for i in range(length):

node=que.pop(0) # 每次將彈出的節點賦給node,然後再進行操作

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迴圈,迴圈次數...