题目链接
题目乍一看以为是在求二叉树深度,但其实是求所有几点中左右子树深度和最大的值
因为题目中说了这条最长路径可能不经过根节点 下面让我们看两组例子
那么现在只需要在二叉树的深度上进行一点小变形就能做出来了
每次递归的时候维护一个左右子树深度和的最大值即可
int res = 0;
public int diameterOfBinaryTree(TreeNode root) {
getdeep(root);
return res;
}
private int getdeep(TreeNode root){
if (root == null) return 0;
int left = getdeep(root.left);
int right = getdeep(root.right);
res = Math.max(res,left+right);
return Math.max(left,right)+1;
}