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
classSolution{ int max = 0; publicintdiameterOfBinaryTree(TreeNode root){ depth(root); return max; } publicintdepth(TreeNode root){ if(root == null){ return0; } int left = depth(root.left); int right = depth(root.right); max = Math.max(max, left + right); return Math.max(left, right) + 1; } }