請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。例如:給定二叉樹: [3,9,20,null,null,15,7],
3/ \
9 20
/ \15 7
返回其層次遍歷結果:
[[3],
[20,9],
[15,7]
]
# 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]]:
res =
ifnot root:
return res
qu =
[root]
j =-1
while qu:
j +=
1 n =
len(qu)
tmp =
for i in
range
(n):
node = qu.pop(0)
if j %2:
tmp.reverse(
)return res
奇數層正常佇列,偶數層反向佇列
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
else
flag =
!flag;
res.
push_back
(tmp);}
return res;}}
;
劍指Offer 從上到下列印二叉樹
2.題目 2 3.題目 3 不分行從上到下列印二叉樹。從上到下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。輸入 8 6 10 57 911輸出 8610 57911這個其實就是層序遍歷。每次列印乙個結點的時候,若該結點有子結點,則讓該結點的子結點放到乙個佇列的末尾。接下來到佇列的首部...
劍指offer 從上到下列印二叉樹
普通的列印二叉樹很簡單,使用佇列就可以解決。但是我做的這個題目是要將每一層的節點都存起來,而且不同層之間是分開儲存的。其中有個問題就是我們如何去判斷某一層是遍歷完了,然後要到下一層了呢。我們可以這樣解決,記住每層的個數,這樣遍歷上一層時我們知道上一層個數了就不會遍歷下一層的節點 而遍歷過程中也要把子...
劍指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...