首页 > 代码库 > Binary Tree Maximum Path Sum

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,

       1      /      2   3

 

Return 6.

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    int maxPathSum(TreeNode *root) {        int tmp = help(root);        return maxval;    }    int help(TreeNode *root){        if(root == NULL) return 0;        if(root->left == NULL && root->right == NULL){maxval = max(maxval, root->val); return root->val;}        int lmax, rmax, ans, l, r, ret;        lmax = rmax = ans = INT_MIN;        l = r = 0;        if(root->left) {            l = help(root->left);            lmax = max(l, l + root->val);        }        if(root->right) {            r = help(root->right);            rmax = max(r, r + root->val);        }        ans = max(lmax, rmax);        ans = max(ans, root->val);        ans = max(ans, l + r + root->val);        maxval = max(ans, maxval);                ret = max(l+root->val, r+root->val);        ret = max(ret, root->val);        return ret;    }        int maxval = INT_MIN;};

 

Binary Tree Maximum Path Sum