int max=Integer.MIN_VALUE;
int maxHeightSum(TreeNode root) {
if (root == null) return 0;
int maxL = Math.max(maxHeightSum(root.left), 0);
int maxR = Math.max(maxHeightSum(root.right), 0);
//这个是关键,采用后根顺序遍历二叉树,max保存不含根节点的最大路径。在这个时候需要刷新
max = Math.max(maxL + maxR + root.val, max);
//实际返回的是最大有效深度
return Math.max(maxL, maxR) + root.val;
}
public int maxPathSum(TreeNode root) {
if (root == null)
return 0;
maxHeightSum(root);
return max;
}
求二叉树最远距离
最新推荐文章于 2021-02-25 00:04:54 发布