這題一開始還以為那個忘記叫什么的算法,其實就是dfs,一開始在考慮的時候,對于每一個點出了考慮左右跟的最大,還多考慮了從其他地方到這個點的最大,其實這一個point是不用考慮的因為在遞歸的時候一定會經過相應的點(沒想到。。。)
/** * 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 maxx; int findit(TreeNode* root){ if(root == NULL) return 0; int l = findit(root -> left); int r = findit(root -> right); if(l < 0) l = 0; if(r < 0) r = 0; if(r + l + root -> val > maxx) maxx = r + l + root -> val; return root -> val + max(r, l); } int maxPathSum(TreeNode* root) { maxx = INT_MIN; findit(root); return maxx; }};新聞熱點
疑難解答