题目
给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。
两个节点之间的路径长度 由它们之间的边数表示。
示例
输入:root = [5,4,5,1,1,5]
输出:2
输入:root = [1,4,5,4,4,5]
输出:2
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-univalue-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:递归
Java实现
class Solution {
int res = 0;
public int longestUnivaluePath(TreeNode root) {
longestPath(root);
return res;
}
public int longestPath(TreeNode root) {
if (root == null) return 0;
int maxLeft = longestPath(root.left), maxRight = longestPath(root.right);
int curLeft = 0, curRight = 0;
if (root.left != null && root.left.val == root.val) {
curLeft = maxLeft + 1;
}
if (root.right != null && root.right.val == root.val) {
curRight = maxRight + 1;
}
res = Math.max(res, curLeft + curRight);
return Math.max(curLeft, curRight);
}
}