每日一题力扣687

 

 

给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。

注意:两个节点之间的路径长度由它们之间的边数表示。

class Solution:
    def __init__(self):
        self.res =0 
    def longestUnivaluePath(self, root: TreeNode) -> int:
        def maxlen(node):#记录点输入的过程
            if node ==None:
                return 0
            left=maxlen(node.left)#对左右子树都这样
            right=maxlen(node.right)
            if node.left:#如果点的左子树有,并且根节点的值等于左子树的值,就加一,否则为0
                left=left+1 if node.left.val==node.val else 0
            if node.right:
                right = right + 1 if node.right.val == node.val else 0
            self.res = max(self.res, left+right)
            return max(left, right)
        maxlen(root)
        return self.res

 

posted @ 2021-03-31 16:53  小千北同学超爱写代码  阅读(47)  评论(0编辑  收藏  举报