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
Return6.
思想
这明显是一道递归题,但是递归不是那么简单,注意返回的值,和最大值的区别
代码
class Solution {
public:
int maxPathSum(TreeNode *root) {
if(root == NULL) return 0;
int max = INT_MIN;
recurse(root, max);
return max;
}
int recurse(TreeNode *root, int &max) {
int lMax = 0, rMax = 0;
int value = root->val;
if(root->left != NULL) {
lMax = recurse(root->left, max);
if(lMax > 0) value += lMax;
}
if(root->right != NULL) {
rMax = recurse(root->right, max);
if(rMax > 0) value += rMax;
}
if(value > max) {
max = value;
}
return Max(root->val, root->val + Max(lMax, rMax));
}
int Max(int a, int b) {
if(b > a) return b;
else return a;
}
};