首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode 687. 最长同值路径

Leetcode 687. 最长同值路径

作者头像
glm233
发布2020-09-28 17:36:16
发布2020-09-28 17:36:16
5880
举报

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

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

示例 1:

输入:

5 / \ 4 5 / \ \ 1 1 5 输出:

2 示例 2:

输入:

1 / \ 4 5 / \ \ 4 4 5 输出:

2

思路:暴力dfs,dfs函数表示该结点左子树或右子树中最长的一条路径,l或r表示左右分别的路径长度,如果该结点等于左儿子值,那么l=左子树的l+1,同理该结点等于右儿子值,r=右子树的r+1,最后取个最大值即可,每遍历到一个结点就更新一次答案

代码语言:javascript
复制
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int res;
    public int longestUnivaluePath(TreeNode root) {
        dfs(root);
        return res;
    }
    public int dfs(TreeNode root)
    {
        if(root == null)return 0;
        int l=0,r=0;
        if(root.left!=null)
        {
            int lv=root.left.val;
            int tep=dfs(root.left);
            if(lv==root.val)
            {    l=tep+1;
            }
        }
        if(root.right!=null)
        {
            int lv=root.right.val;
            
            int tep=dfs(root.right);
            if(lv==root.val)
            {    r=tep+1;
            }
        }
        res=res>l+r?res:l+r;
        return l>r?l:r;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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