Binary Tree Maximum Path Sum

方法:采用递归的方式

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int maxPathSum(TreeNode* root) {
        maxSum = INT_MIN;
        dfs(root);
        return maxSum;
    }
private:
    int maxSum;
    int dfs(TreeNode *root)
    {
        if(root == nullptr)
            return 0;
            
        int l = dfs(root->left);
        int r = dfs(root->right);
        
        int sum = root->val;
        if(l > 0)
            sum += l;
        if(r > 0)
            sum += r;
        
        maxSum = max(sum, maxSum);
        return max(l, r) > 0 ? max(r, l) + root->val : root->val;
    }
};

 

posted @ 2017-04-19 22:24  chengcy  Views(97)  Comments(0)    收藏  举报