输入:
5
/ \
4 5
/ \ \
1 1 5
输出: 2
输入:
1
/ \
4 5
/ \ \
4 4 5
输出: 2
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def longestUnivaluePath(self, root: TreeNode) -> int:
res = float('-inf')
def dfs(node):
if node is None:
return dict()
value = node.val
left_map = dfs(node.left)
right_map = dfs(node.right)
total = left_map.get(value, 0) + right_map.get(value, 0) + 1
nonlocal res
res = max(res, total)
return {value: 1 + max(left_map.get(value, 0), right_map.get(value, 0))}
dfs(root)
return res - 1 if res != float('-inf') else 0