需要两个信息
- 最大的直径,所有节点共享,可以设置为全局变量
- 每个节点的深度,用来计算直径,每个节点独有,用递归传递
直径=每个节点左右子树最大深度之和
class Solution {
int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
ss(root);
return max;
}
public int ss(TreeNode node){
if(node==null) return 0;
int m = ss(node.left);
int n = ss(node.right);
max = Math.max(m+n,max);
return Math.max(m,n)+1;
}
}