思路:和上道题的思路一样,只需另外写一个函数,每遍历一个节点,将当前节点存入一个vector向量 tmp中,当满足条件是,将此时的tmp存入结果ans即可。
/**
* 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:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int> > ans;
vector<int> tmp;
pathSumDFS(root,sum,tmp,ans);
return ans;
}
void pathSumDFS(TreeNode* root,int sum,vector<int>&tmp,vector<vector<int> >&ans)
{
if(!root) return ;
tmp.push_back(root->val);
if(!root->left &&!root->right &&root->val==sum)
{
ans.push_back(tmp);
}
if(root->left) pathSumDFS(root->left,sum-root->val,tmp,ans);
if(root->right) pathSumDFS(root->right,sum-root->val,tmp,ans);
tmp.pop_back();
}
};