Binary Tree Maximum Path Sum

来源:互联网 发布:阿里云备案是什么意思 编辑:程序博客网 时间:2024/06/07 15:51
-----QUESTION-----

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,

  

 / \ 

 2 3

 

Return 6.
-----SOLUTION-----

class Solution {public:    int maxPathSum(TreeNode *root) {        maxSum = INT_MIN;        calRootSum(root);                return maxSum;            }        int calRootSum(TreeNode *root)    {        int leftSum = 0;        int rightSum = 0;        if(root->left)         {            leftSum = calRootSum(root->left);        }        if(root->right)         {            rightSum = calRootSum(root->right);        }        int sum = root->val;        if(leftSum > 0)        {            sum += leftSum;        }        else        {            leftSum = 0;        }        if(rightSum > 0)        {            sum += rightSum;        }        else        {            rightSum = 0;        }        if(sum > maxSum)        {            maxSum = sum;        }        sum = max(leftSum,rightSum);        return sum+root->val;    }private:    int maxSum;};

0 0
原创粉丝点击