難度:中等
題目描述:
思路總結:層次遍歷+insert頭
題解一:
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
from collections import deque
class
solution
:def
zigzaglevelorder
(self, root: treenode)
-> list[list[
int]]:
#思路:這題還是用迭代,把之前層次遍歷的佇列換成棧
ifnot root:
return
queue = deque(
[root,])
res =
cur_len =
0 level =
0#加個標誌位,偶數層從左往右,奇數層從右往左。
while queue:
tmp =
cur_len =
len(queue)
while cur_len >0:
cur = queue.popleft(
)if level %2==
0:else
: tmp.insert(
0, cur.val)
cur_len -=
1 level +=
1return res
103 二叉樹的鋸齒形層次遍歷
本題跟102很像,就是將二叉樹的偶數層逆序輸出 我是直接將上一題的結果的偶數層reverse一下 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right...
103 二叉樹的鋸齒形層次遍歷
給定乙個二叉樹,返回其節點值的鋸齒形層次遍歷。即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回鋸齒形層次遍歷如下 3 20,9 15,7 看到本題目,首先想到的是使用佇列或棧,然而簡單使用這...
103 二叉樹的鋸齒形層次遍歷
布林值取反要注意 label bool 1 label deque list reversed deque for in range length root deque.pop 0 其實用這個標誌位 判斷奇數偶數層 儲存的時候 調換偶數層反轉順序儲存也可以 上面列表反轉就不用了 if label t...