543. 二叉树的直径
题目
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
示例 :
给定二叉树
1
/ \
2 3
/ \
4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意:两结点之间的路径长度是以它们之间边的数目表示。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diameter-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
1-转化为求根节点左右子树的最高树高和,因为跟节点可能不是答案,需要递归处理最长子树;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package leetcode;
public class LeetCode_0543 {
}
class TreeNode_0543 { int val; TreeNode_0543 left; TreeNode_0543 right;
TreeNode_0543(int x) { val = x; } }
class Solution_0543 { public int maxD = 0;
public int diameterOfBinaryTree(TreeNode_0543 root) { maxR(root); return maxD; }
private int maxR(TreeNode_0543 root) { if (root == null) { return 0; } else { int left = maxR(root.left) + 1; int right = maxR(root.right) + 1; maxD = Math.max(left + right - 1, maxD); return Math.max(left, right); } }
}
|