思路
- 直径 = 边数
- 直径不一定过圆心,所以需要遍历整棵树
- 利用左右子树的最大深度来解决,同步更新最大直径
class Solution {
int maxDiam = 0;
public int diameterOfBinaryTree(TreeNode root) {
maxDepth(root);
return maxDiam;
}
public int maxDepth(TreeNode node) {
if(node == null) {
return 0;
}
int depthLeft = dfs(node.left);//当前节点的左侧深度
int depthRight = dfs(node.right);//当前节点的右侧深度
maxDiam = Math.max(depthRight + depthLeft, maxDiam);
return Math.max(depthLeft, depthRight) + 1;//当前节点的深度
}
}