# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
longestzigzag
(self, root: treenode)
->
int:
res =
0# 返回結果
'''兩種情況,第一步向左(0表示)或第一步向右(1表示)'''
dq = collections.deque(
)# 輔助佇列,用來記錄某條路徑的第乙個節點
p = root
# 把root入隊
if p.left:
(p,0))
if p.right:
(p,1))
while dq:
p, pos = dq.popleft(
) ans =
0# 區域性變數,計算路徑的長度
while p:
ans +=
1# 訪問過節點,+1
if pos ==0:
# pos=0,走左邊
p = p.left
if p and p.left:
# 下一步,走右邊,當前節點的左邊不走,入隊儲存
(p,0))
# 下一步,走右邊,pos置為1
pos =
1elif pos ==1:
# 走右邊
p = p.right
if p and p.right:
(p,1))
pos =
0 res =
max(res, ans-1)
# 路徑長度=節點數-1
return res
leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...
LeetCode (二叉樹)反轉二叉樹
遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...
LeetCode之映象二叉樹(簡單 二叉樹)
問題描述 給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。遞迴 definit...