543. 二叉树的直径 - 力扣(LeetCode) (leetcode-cn.com)
思想:求每个节点的左子树和右子树深度之和,寻找最大的。
恶心的地方:左右子树深度开始设置成了全局变量,并赋值为0。局部变量在递归中一定不能设置成全局变量。
class Solution {
int maxdeep=0;
public int diameterOfBinaryTree(TreeNode root) {
if(root==null) return 0;
deep(root);
return maxdeep;
}
int deep(TreeNode root){
if(root.left==null&&root.right==null) return 0;
int leftdeep=root.left==null?0:deep(root.left)+1;
int rightdeep=root.right==null?0:deep(root.right)+1;
// maxdeep=leftdeep+rightdeep>maxdeep?leftdeep+rightdeep:maxdeep;
maxdeep=Math.max(leftdeep+rightdeep,maxdeep);
return Math.max(leftdeep,rightdeep);
}
}
|