二叉樹層次遍歷 廣度遍歷和深度遍歷

2021-10-04 05:50:09 字數 1403 閱讀 3076

問題**:二叉樹層次遍歷

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

例子

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

3

/ \

920/ \

157

返回其層次遍歷結果:

[[3

],[9

,20],

[15,7

]]

思路:廣度遍歷和深度遍歷。

與一般的廣度遍歷不同的是,每次遍歷都將queue彈空,這樣就能保證每次queue裡儲存的都是乙個層次的元素。

# 廣度遍歷

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

# 如果樹為空

ifnot root:

return

# 如果樹非空

queue =

res =

while queue:

) cur_level =

len(queue)

for i in

range

(cur_level)

: temp = queue.pop(0)

res[-1

]if temp.left:

if temp.right:

return res

與一般深度遍歷不同的是,遞迴過程中我們僅需記住當前節點與層次即可。

# 深度遍歷

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

# 樹為空

if root ==

:return

# 樹非空

res =

defhelper

(node, level):if

len(res)

== level:

) res[level]

if node.left:

helper(node.left, level+1)

if node.right:

helper(node.right, level+1)

return helper(root,

0)

廣度遍歷二叉樹和深度遍歷二叉樹演算法

二叉樹演算法基本和遞迴有關,前中後序演算法就不提了,主要看一下深度優先遍歷和廣度優先遍歷。實現這2種遍歷需要借助棧或者佇列來儲存中間結果,原因是遍歷過程出現了回溯。1 筆試題 廣度遍歷二叉樹 深度遍歷二叉樹 23 include4 include5 include6 7using namespace...

Kotlin實現二叉樹的深度遍歷和廣度遍歷

今天,用kotlin打造乙個二叉樹,也是練手級別小製作,希望大家喜歡。資料結構知識 kotlin知識 data class treenode var value int,var leftchild treenode?null,var rightchild treenode?null 這裡只寫了新增和...

對稱二叉樹 深度遍歷與廣度遍歷

問題 對稱二叉樹 問題描述 給定乙個二叉樹,檢查它是否是映象對稱的。比如,下面這個二叉樹是映象對稱的 1 2 2 3 4 4 3 而這個二叉樹則不是映象對稱的。1 2 2 3 3例子 輸入 1,2,2,3,4,4,3 輸出 true 思路 映象對稱意味著左子樹與右子樹映象對稱,在遍歷左子樹或者右子樹...