class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> ans;
vector<int> temp;
if(root==NULL)
return ans;
find(ans,temp,root,0,sum);
return ans;
}
void find(vector<vector<int>> &ans,vector<int> temp,TreeNode *root,int sum,int target)
{
temp.push_back(root->val);
if(root->left==NULL&&root->right==NULL)
{
sum += root->val;
if(target==sum)
ans.push_back(temp);
return;
}
if(root->left)
{
find(ans,temp,root->left,sum+root->val,target);
}
if(root->right)
find(ans,temp,root->right,sum+root->val,target);
}
};