LeetCode: Path Sum 2
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5] ]
This is a very elegant Solution:
1 class Solution { 2 public: 3 vector<vector<int> > solSet; 4 vector<int> sol; 5 void solve(TreeNode* root, int sum){ 6 if ( (root->left==NULL) && (root->right==NULL) && (sum-root->val==0) ) { 7 sol.push_back(root->val); 8 solSet.push_back(sol); 9 return; 10 } 11 sol.push_back(root->val); 12 if (root->left !=NULL){ 13 solve(root->left, sum-root->val); 14 sol.pop_back(); //记住需要pop_back 15 } 16 if (root->right!=NULL){ 17 solve(root->right, sum-root->val); 18 sol.pop_back(); 19 } 20 21 } 22 23 24 vector<vector<int> > pathSum(TreeNode *root, int sum) { 25 // Start typing your C/C++ solution below 26 // DO NOT write int main() function 27 sol.clear(); 28 solSet.clear(); 29 if (root==NULL) {return solSet;} 30 solve(root, sum); 31 return solSet; 32 } 33 };
This problem deserved to be rehacking
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步