LeetCode124. Binary Tree Maximum Path Sum

来源:互联网 发布:邓紫棋的喜欢你 知乎 编辑:程序博客网 时间:2024/05/23 01:22

LeetCode124. Binary Tree Maximum Path Sum
找出二叉树任意一点到另一点的路径,使得和最大.
解题思路:后序遍历,先计算左右子树的值l和r,若l<0或r<0,则不用加上

       1      / \     2   3

最大为6

               4             /   \            2     6           / \    / \          1   3  5   7

最大从3到7:4 + 5 + 13 = 22

public class Solution {    int maxsum = Integer.MIN_VALUE;    public int maxPathSum(TreeNode root) {        if(root == null)            return 0;        maxSum(root);        return maxsum;    }    public int maxSum(TreeNode root) {        if(root == null) return 0;         /*求以root为根的当前子树的最大路径和*/          int cur = root.val;        int lmax = maxSum(root.left);        int rmax = maxSum(root.right);        if(lmax > 0)            cur += lmax;        if(rmax > 0)            cur += rmax;        if(cur > maxsum)            maxsum = cur;        /*返回以当前root为根的子树的最大路径和*/        return Math.max(root.val,Math.max(root.val + lmax, root.val + rmax));       }}
0 0
原创粉丝点击