543. 二叉树的直径
要点:根节点要做的事情是:把左子树和右子树的高度相加,再加1即可得到该节点所构成的一条直径长度,用一个中间变量max记录最长直径,最终max就是结果。计算直径:1.取得左子树高度 2.取得右子树高度 3.加一,即把根节点也加进去,因此本题实质就是后续遍历,只是在后续遍历过程顺便计算每个子节点的高度。
class Solution {
int max = Integer.MIN_VALUE;
public int diameterOfBinaryTree(TreeNode root) {
height(root);
return max - 1;
}
public int height(TreeNode root){
if(root == null) return 0;
int left = height(root.left);
int right = height(root.right);
max = Math.max(left + right + 1,max);
return Math.max(left,right) + 1;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。