/**
* 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int maxSum = INT_MIN;
maxSinglePathSum(root, maxSum);
return maxSum;
}
int maxSinglePathSum(TreeNode *root, int &maxSum)
{
if (root == NULL)
return 0;
int leftMaxSum = max(0,maxSinglePathSum(root->left, maxSum));
int rightMaxSum = max(0,maxSinglePathSum(root->right, maxSum));
int curSum = root->val + leftMaxSum + rightMaxSum;
maxSum = max(maxSum, curSum);
return root->val + max(leftMaxSum, rightMaxSum);
}
};
LeetCode-Binary Tree Maximum Path Sum
最新推荐文章于 2024-09-08 19:37:30 发布