码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode Binary Tree Maximum Path Sum

时间:2014-07-02 21:13:05      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   art   for   io   

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,

       1
      /      2   3

 

Return 6.

对于每个结点,我们需要比较三个值。

  • 左结点为结尾的路径和+当前结点值
  • 右结点为结尾的路径和+当前结点值
  • 当前结点值

取这个三个值作为以当前节点为结尾的最大路径和返回。

同时获取以当前结点为根的子树的最大路径和,其子树最大路径来源于

  • 以当前结点为结尾的最大路径和(也就是上面结点所述的值)
  • 左节点为结尾的路径和+当前结点值+右结点为结尾的路径和
  • 左子树的最大路径和
  • 右子树的最大路径和

取其4个值中得最大值作为子树的最大路径和。

class Solution {
public:
    int maxSum = INT_MIN;
    int getMaxSum(TreeNode* root){
        if(root == NULL) return 0;
        int leftSum = getMaxSum(root->left), rightSum = getMaxSum(root->right);
        int curSum =  max(root->val, max(root->val+leftSum, root->val+rightSum));
        maxSum = max(maxSum,max(curSum,root->val+leftSum+rightSum));
        return curSum;
    }

    int maxPathSum(TreeNode *root){
        getMaxSum(root);
        return maxSum;
    }
};

 

Leetcode Binary Tree Maximum Path Sum,布布扣,bubuko.com

Leetcode Binary Tree Maximum Path Sum

标签:style   blog   color   art   for   io   

原文地址:http://www.cnblogs.com/xiongqiangcs/p/3819070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!