问题描述:找出一颗树中,相隔最长的路径。
原代码:
private int diameter=0;
public int diameterOfBinaryTree(TreeNode root) {
if(root==null)
return 0;
int left=findDiameter(root.left);
int right=findDiameter(root.right);
diameter=Math.max(diameter,left+right);
return diameter;
}
private int findDiameter(TreeNode root) {
if(root==null)
return 0;
int left=findDiameter(root.left);
int right=findDiameter(root.right);
diameter=Math.max(diameter,left+right);
return Math.max(left,right)+1;
}
最佳答案:
int longest = 0;
public int diameterOfBinaryTree(TreeNode root) {
getLongestPath(root);
return longest;
}
private int getLongestPath(TreeNode node) {
if (node == null) return 0;
int left = getLongestPath(node.left);
int right = getLongestPath(node.right);
longest = Math.max(longest, left+right);
return 1 + Math.max(left, right);
}
思路是一致的,但是我多了一层无用的判断。