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; } }
|