請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。
例如:給定二叉樹: [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 ...