前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 687. 最长同值路径

Leetcode 687. 最长同值路径

作者头像
zhipingChen
发布2019-05-31 10:19:34
7330
发布2019-05-31 10:19:34
举报
文章被收录于专栏:编程理解编程理解

题目描述

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

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

递归

最长路径值是由一个节点的左连续边长度,加上右连续边长度之和。不妨以 path(node) 函数表示 node 节点为端点的最长连续节点个数,则遍历二叉树,找到左、右连续节点个数和的最大值即可。

代码语言:javascript
复制
# 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:
        self.ret=0
        def path(node):
            if not node:
                return 0
            l=path(node.left)
            r=path(node.right)
            l=l if node.left and node.left.val==node.val else 0
            r=r if node.right and node.right.val==node.val else 0            
            self.ret=max(l+r,self.ret)
            return max(l,r)+1
        path(root)
        return self.ret

代码中以 self.ret 表示路径长度,边数相对于点数减一,所以 self.ret=l+r。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档