struct TreeNode
{
TreeNode* left;
TreeNode* right;
int value;
};
int res;
int dfs(TreeNode* root)
{
if (root == nullptr)
{
return 0;
}
int left = dfs(root->left);
int right = dfs(root->right);
int sum = root->value;
if (left > 0)
{
sum += left;
}
if (right > 0)
{
sum += right;
}
res = max(res, sum);
return max(right, left) > 0 ? max(right, left) + root->value : root->value;
}
int MaxPathSum(TreeNode* root)
{
res = INT_MIN;
dfs(root);
return res;
}
二叉树的最大路径和,这里的路径可以跨越根和左右子树
最新推荐文章于 2022-10-23 12:02:55 发布