原文出处:http://blog.csdn.net/brucehb/article/details/12322927
给一个二叉树,每个节点都是正或负整数,求该二叉树的最大子树和?
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
};
int visit(TreeNode *root, int &result)
{
if (root == NULL)
{
return 0;
}
int sum = root->val;
if (root->left != NULL || root->right != NULL)
{
int left = visit(root->left, result);
int right = visit(root->right, result);
sum += left + right;
result = max(sum, result);
}
return sum;
}
int maxSum(TreeNode *root)
{
int result = INT_MIN;
visit(root, result);
return result;
}