103 二叉樹的鋸齒形層次遍歷

2021-10-01 04:10:17 字數 1026 閱讀 2782

難度:中等

題目描述:

思路總結:層次遍歷+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...