/**
* 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>> vv,vv2;
if(root==NULL) return vv;
vector<int> v;
if(root->left ==NULL && root->right == NULL) {
if(root->val==sum){
v.push_back(root->val);
vv.push_back(v);
}
return vv;
}
vv = pathSum(root->left,sum-root->val);
if(!vv.empty()){
for(int i=0;i<vv.size();i++){
vv[i].insert(vv[i].begin(),root->val);
}
}
vv2 = pathSum(root->right,sum-root->val);
if(!vv2.empty()){
for(int i=0;i<vv2.size();i++){
vv2[i].insert(vv2[i].begin(),root->val);
vv.push_back(vv2[i]);
}
}
return vv;
}
};