image.png

递归

image.png
image.png

  1. class Solution {
  2. int ans;
  3. public int diameterOfBinaryTree(TreeNode root) {
  4. ans = 1;
  5. depth(root);
  6. return ans - 1;
  7. }
  8. public int depth(TreeNode node) {
  9. if (node == null) return 0; // 访问到空节点了,返回0
  10. int L = depth(node.left); // 左儿子为根的子树的深度
  11. int R = depth(node.right); // 右儿子为根的子树的深度
  12. ans = Math.max(ans, L+R+1); // 计算d_node即L+R+1 并更新ans
  13. return Math.max(L, R) + 1; // 返回该节点为根的子树的深度
  14. }
  15. }