最長同值路徑
給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。
注意:兩個節點之間的路徑長度由它們之間的邊數表示。
示例 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...