543. 二叉树的直径
题目描述
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
输入输出
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
基本思路
从剑指-Offer-55-I-二叉树的深度可以找到解题思路
max = Math.max(max, left + right); 每个节点的最大直径 = (左子树深度 + 右子树深度)的最大值 
return Math.max(left, right) + 1; 返回左/右子树深度
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | class Solution {     int max = 0;     public int diameterOfBinaryTree(TreeNode root) {         depth(root);         return max;     }     public int depth(TreeNode root) {         if(root == null){             return 0;         }         int left = depth(root.left);         int right = depth(root.right);          max = Math.max(max, left + right);         return Math.max(left, right) + 1;     } }
  |