leetcdode 687 最長同值路徑

2021-10-09 22:00:42 字數 1592 閱讀 1686

最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。

注意:兩個節點之間的路徑長度由它們之間的邊數表示。

示例 1:

輸入:

5

/ \4 5

/ \ \

1 1 5

輸出:

2示例 2:

輸入:

1

/ \4 5

/ \ \

4 4 5

輸出:

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

__init__

(self)

: self.ans =

0def

longestunivaluepath

(self, root: treenode)

->

int:

# 先找到左右子樹的路徑,然後比較左右子樹結點值是否和我的一樣,一樣的話+1

# 輸出 當前+1之後的值

defdfs

(root: treenode):if

not root:

return

0# 空結點肯定是0

if root.left is

none

and root.right is

none

:return

0# 葉子節點

right_val =

0 left_val =

0if root.left:

left_val = dfs(root.left)

if root.right:

right_val = dfs(root.right)

if root.left and root.left.val == root.val:

left_val +=

1if root.right and root.right.val == root.val:

right_val +=

1if root and root.right and root.left and root.right.val == root.val == root.left.val:

self.ans =

max(left_val, right_val)+1

self.ans =

max(self.ans,

max(left_val, right_val)

)return

max(left_val, right_val)

dfs(root)

return self.ans

687 最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。示例 1 輸入 5 4 5 1 1 5 輸出 2示例 2 輸入 1 4 5 4 4 5 輸出 2注意 給定的二叉樹不超過10000個結點。樹的高度不超...

687 最長同值路徑

題目描述 給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。示例 1 輸入 5 4 5 1 1 5輸出 2示例 2 輸入 1 4 5 4 4 5輸出 2注意 給定的二叉樹不超過10000個結點。樹的高...

leetcode 遞迴 687 最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。示例 1 輸入 5 4 5 1 1 5輸出 2示例 2 輸入 1 4 5 4 4 5輸出 2注意 給定的二叉樹不超過10000個結點。樹的高度不超過1...