全称牢记左右子树可能为负数

二叉树的最大路径和

http://www.nowcoder.com/questionTerminal/da785ea0f64b442488c125b441a4ba4a

最大值是记录和,可能为负值。

但maxsum的返回值一定为尽量避免负数。

    private int maxsum;
    public int maxPathSum (TreeNode root) {
        if (root == null)
            return 0;
        maxsum=Integer.MIN_VALUE;
        maxSum(root);
        return maxsum;
    }

    public int maxSum(TreeNode root) {

        if (root == null)
            return 0;
        int left = maxSum(root.left);
        int right = maxSum(root.right);
        int sum = root.val;
        if (left > 0)
            sum += left;
        if (right > 0)
            sum += right;
        if (maxsum < sum)
            maxsum = sum;
        return Math.max(left, right) > 0 ? Math.max(left, right) + root.val : root.val;
    }
}
全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务