leetcode-binary tree maximum path sum

Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

For example:

Given the below binary tree,

public class Solution {
    int result=Integer.MIN_VALUE;
    
    public int maxPathSum(TreeNode root) {
        maxValue(root);
        return result;
    }
    public int maxValue(TreeNode root){
        if(root==null)return 0;
        
        int left=Math.max(maxValue(root.left),0);
        int right=Math.max(maxValue(root.right),0);
        result=Math.max(left+right+root.val,result);
        
        return root.val+Math.max(left,right);
    }
}
Some idea:

The most important idea used in the tree problem is the idea of recursive.

1 For this problem: first analyze the structure needed for the problem. has to start from the root node. the maximum path sum if the root value is contained has to be max of the left, right plus the value of the root value; if any of the value is larger than 0 , then the value should be added. 

so need to compare with 0;(this idea should be memorized)

2 maintain the maxvalue variable and update along the way.

3 one thing to notice is that the return value and the max value we maintained is not the same.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值