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