687. 最长同值路径

Posted xiyangchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了687. 最长同值路径相关的知识,希望对你有一定的参考价值。

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

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

示例 1:

输入:

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

2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-univalue-path

 1 package leetCode.binaryTree;
 2 public class LongestUnivaluePath 
 3     static class TreeNode 
 4         int val;
 5         TreeNode left;
 6         TreeNode right;
 7         TreeNode(int x) 
 8             val = x;
 9         
10     
11  
12     private int res = 0;
13     public int longestUnivaluePath(TreeNode root) 
14           path(root);
15         return res;
16         
17     
18     public int path(TreeNode node) 
19         if(node == null) 
20             return 0;
21         
22         int left = path(node.left);
23         int right = path(node.right);
24         //对于最后的叶子节点所以需要判断是否为空,左子结点存在且和当前节点值相同,则left自增1,否则left重置0;
25         left = (node.left != null && node.val == node.left.val) ? left + 1 : 0;
26         //如果其右子结点存在且和当前节点值相同,则right自增1,否则right重置0       
27         right = (node.right != null && node.val == node.right.val) ? right + 1 : 0;
28         res = Math.max(res, left + right);  
29         return Math.max(left, right);  //返回的该子树的左右子树的最长路径(包括根节点,但是不横跨根节点)
30      
31 

 

以上是关于687. 最长同值路径的主要内容,如果未能解决你的问题,请参考以下文章

687. 最长同值路径

LeetCode687----最长同值路径

最长同值路径(力扣第687题)

树687. 最长同值路径

687. 最长同值路径

leetcode——687. 最长同值路径