/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型 */ int res = -1000000; int maxPathSum(TreeNode* root) { // write code here if(root==nullptr) { return 0; } dfs(root); return res; } void dfs(TreeNode* root) { // 计算的是经过当前节点的路径和 if(root==nullptr) { return ; } int max_left=-100000,max_right=-1000000; calmax(root->left, max_left, 0); calmax(root->right, max_right, 0); cout<<max_left<<" "<<max_right<<endl; res=max(max_left+max_right+root->val,res); res=max(res,max_left+root->val); res=max(res,max_right+root->val); res=max(root->val,res); dfs(root->left); dfs(root->right); } void calmax(TreeNode* root,int& ans, int score) { // 计算当前子树最大的路径和 if(root==nullptr) { return; } ans=max(ans,score+root->val); cout<<"ans: "<<ans<<endl; calmax(root->left, ans, score+root->val); calmax(root->right, ans, score+root->val); } };