/**
* * Definition for a binary tree node.
* * struct TreeNode {
* * int val;
* * TreeNode *left;
* * TreeNode *right;
* * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* * };
* */
/*
后序遍历
*/
class Solution {
public:
int max_sum;//记录最大值的路径值
int maxPathSum(TreeNode* root) {
max_sum = INT_MIN;
dfs(root);
return max_sum;
}
int dfs(TreeNode *root)
{
if(root == NULL)
{
return 0;
}
int l = dfs(root->left);
int r = dfs(root->right);
//计算当前位置的最大路径值
int sum = root->val;
if(l > 0) sum += l;
if(r > 0) sum += r;
max_sum = max(max_sum,sum);
//返回倒上一层只有一个路径的和,取左右两边最大的值,并且该值大于0
return max(r,l) > 0 ? max(r,l) + root->val : root->val;
}
};
树的最大路径和
最新推荐文章于 2023-01-29 19:08:25 发布