LeedCode_二叉树中的最大路径和
题目说明
给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
输入: [1,2,3]
1
/ \
2 3
输出: 6
链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
分析:采用递归的方法,遍历所有的节点,计算每一个节点的最大代价
int max_sum = INT_MIN;
int max_gain(TreeNode *root)
{
if (root==NULL)
return 0;
int left = max(max_gain(root->left), 0);
int right = max(max_gain(root->right), 0);
int price_path = root->val + left + right;
max_sum = max(max_sum, price_path);
return root->val + max(left, right);
}
int maxPathSum(TreeNode* root)
{
max_gain(root);
return max_sum;
}