题目
给出一个二叉树,找出一条最长的路径,该路径上的节点值都相同。这个路径可能经过根节点。
Python题解
class Solution(object):
def longestUnivaluePath(self, root):
"""
:type root: TreeNode
:rtype: int
"""
self.ans = 0
def helper(root):
if root is None:
return 0
left_len = helper(root.left)
right_len = helper(root.right)
left_arrow, right_arrow = 0, 0
if root.left and root.left.val == root.val:
left_arrow = left_len + 1
if root.right and root.right.val == root.val:
right_arrow = right_len + 1
self.ans = max(self.ans, left_arrow + right_arrow)
return max(left_arrow, right_arrow)
helper(root)
return self.ans