劍指Offer系列32 3 從上到下列印二叉樹3

2021-10-06 22:48:50 字數 1529 閱讀 2957

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。

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

9 20

/ 15 7

返回其層次遍歷結果:

[[3],

[20,9],

[15,7]

]python

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

# 思路:

# bfs+deque,奇偶層分別入隊尾,隊頭

# 複雜度:

# o(n)

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

ifnot root:

return

res, q =

, collections.deque(

)# 根入隊

while q:

tmp =

# 暫存列表

# 列印奇數層

for _ in

range

(len

(q))

:# 從左向右列印

node = q.popleft(

)# 先左子樹後右子樹

ifnot q:

break

# 若為空則提前跳出

# 列印偶數層

tmp =

for _ in

range

(len

(q))

:# 從右向左列印

node = q.pop(

)# 先右子樹後左子樹

return res

c++
/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

res.

push_back

(tmp)

; tmp.

clear()

;if(q.empty()

)break

;for

(int i = q.

size()

; i >

0; i--

) res.

push_back

(tmp);}

return res;}}

;

Python劍指offer 分行從上到下列印二叉樹

從上到下按層列印二叉樹,同一層的節點按照從左到右 的順序列印,每一層列印到第一行,例如本題中上乙個問題的二叉樹 輸出形式會是 86 10 5 7 9 11 這道題和前面一道題十分類似,也可以用乙個佇列來儲存要列印的節點。為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數 乙個變數表示當前層中還沒...

劍指Offer系列32 1 從上到下列印二叉樹

從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 3,9,20,15,7 python definition for a binary tree node.class treenode de...

劍指Offer系列32 2 從上到下列印二叉樹2

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 python definition for a binary tree node.class ...