题目
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。
注意:两个节点之间的路径长度由它们之间的边数表示。
代码
class Solution {
public int max=0;
public int arrowLength(TreeNode root) {
if(root==null)
return 0;
int left=arrowLength(root.left);
int right=arrowLength(root.right);
int leftlen=0,rightlen=0;
if(root.left!=null&&root.left.val==root.val)
leftlen=left+1;
if(root.right!=null&&root.right.val==root.val)
rightlen=right+1;
max=Math.max(max,leftlen+rightlen);
return Math.max(leftlen,rightlen);
}
public int longestUnivaluePath(TreeNode root) {
arrowLength(root) ;
return max;
}
}
反思
确实难想出来。