
public class Num543二叉树的直径 {
private int ans = 0;
public int diameterOfBinaryTree(TreeNode root) {
dfs(root);
return ans;
}
//直径长度就是该点的左子树深度加右子树深度
private int dfs(TreeNode root) {
if (root == null) {
return 0;
}
int left = dfs(root.left);
int right = dfs(root.right);
ans = Math.max(left + right, ans);
//返回子树深度
return Math.max(left, right) + 1;
}
}