1 void GetPathSum(TreeNode* root,vector<vector<int>> &ret,vector<int> &tmp,int &retSum,int sum) 2 { 3 if(root == NULL) 4 return; 5 6 tmp.push_back(root->val); 7 retSum += root->val; 8 if(!root->left&& !root->right) //子节点 9 { 10 if(sum == retSum) 11 ret.push_back(tmp); 12 } 13 else{ 14 if(root->left) 15 GetPathSum(root->left,ret,tmp,retSum,sum); 16 if(root->right) 17 GetPathSum(root->right,ret,tmp,retSum,sum); 18 } 19 retSum -= root->val; 20 tmp.pop_back(); 21 } 22 vector<vector<int> > pathSum(TreeNode* root, int sum) { 23 vector<vector<int>> ret; 24 vector<int> tmp; 25 int retSum = 0; 26 GetPathSum(root,ret,tmp,retSum,sum); 27 return ret; 28 }
原文:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/13512449.html