https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/
最大路径都有一个最顶端的点,遍历每一个点,考虑以这个点作为路径的最高的点。函数返回竖直的最大距离,同时要考虑负数问题,如果小于0,则返回0。
/**
* 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 ans;
int max_depth(TreeNode *root){
if(root==NULL)
return 0;
int a=max_depth(root->left);
int b=max_depth(root->right);
ans=max(ans,root->val+a+b);
return max(0,root->val+max(a,b));
}
int maxPathSum(TreeNode* root) {
ans=INT_MIN;
max_depth(root);
return ans;
}
};