题目链接:https://leetcode.com/problems/binary-tree-maximum-path-sum/#/description
Given a binary tree, find the maximum path sum.
For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.
For example:
Given the below binary tree,
1 / \ 2 3
Return 6
.
class Solution {
public:
int maxPathSum(TreeNode* root) {
int maxPath=INT32_MIN;
dfsMaxPath(root,maxPath);
return maxPath;
}
int dfsMaxPath(TreeNode* root,int &maxPath)
{
if(!root) return 0;
int l=max(0,dfsMaxPath(root->left,maxPath));
int r=max(0,dfsMaxPath(root->right,maxPath));
maxPath=max(maxPath,l+r+root->val);
return root->val+max(l,r);
}
};