题目描述:
543. 二叉树的直径 - 力扣(LeetCode) (leetcode-cn.com)
Java代码一:
class Solution {
public int getTreeHeight(TreeNode root){
if(root==null)return 0;
return Integer.max(getTreeHeight(root.left),getTreeHeight(root.right))+1;
}
public int diameterOfBinaryTree(TreeNode root) {
if(root==null)return 0;
int max=Integer.max(diameterOfBinaryTree(root.left),diameterOfBinaryTree(root.right));
return Integer.max(max,getTreeHeight(root.left)+getTreeHeight(root.right));
}
}
Java代码二:
class Solution {
int answer=0;
public int getTreeHeight(TreeNode root){ //该函数功能有2个:计算高度;计算answer
if(root==null)return 0;
int leftHeight=getTreeHeight(root.left),rightHeight=getTreeHeight(root.right);
answer=Math.max(leftHeight+rightHeight,answer); //判断【当前结点的左右子树高度和】是否最大
return Math.max(leftHeight,rightHeight)+1;
}
public int diameterOfBinaryTree(TreeNode root) { //最大直径一定是某个结点的左右子树的高度和
if(root==null)return 0;
getTreeHeight(root); //这里的返回值多余
return answer;
}
}