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. 最长同值路径的主要内容,如果未能解决你的问题,请参考以下文章