给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
本质上:遍历二叉树,对于任意一个节点计算其左右子树深度之和,然后寻找到一个最大值!
class Solution { int MaxDepths = 0; public int diameterOfBinaryTree(TreeNode root) { depth(root); return MaxDepths; } private int depth(TreeNode node){ if (node == null) return 0; int l = depth(node.left); int r = depth(node.right); if (l + r > MaxDepths){ MaxDepths = l + r; } return Math.max(l,r) + 1; } }