LeetCode 1372 二叉樹的最長交錯路徑

2021-10-07 05:34:05 字數 1067 閱讀 1159

# 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...