题目
leetcode 124
给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
代码
int maxPathSum__(struct TreeNode *root, int *max) {
if (root == NULL) return 0;
int l = maxPathSum__(root->left, max);
int r = maxPathSum__(root->right, max);
int sum = root->val;
if (l > 0 && l >= r) sum += l;
if (r > 0 && r > l) sum += r;
if (l > 0 && r > 0 && root->val + l + r > *max) *max = root->val + l + r;
else if (sum > *max) *max = sum;
return sum;
}
int maxPathSum(struct TreeNode* root){
int max = -1000000;
maxPathSum__(root, &max);
return max;
}