class Solution {
public:
vector<vector<int> > res;
void find(TreeNode* p,vector<int> rec,int target){
vector<int> record;
for(auto x : rec) record.push_back(x);
record.push_back(p->val);
if(p->left != NULL) find(p->left,record,target);
if(p->right != NULL) find(p->right,record,target);
if(p->left == NULL && p->right == NULL){
int sum = 0;
for(auto x : record) sum += x;
if(sum == target) res.push_back(record);
}
return;
}
vector<vector<int>> FindPath(TreeNode* root,int expectNumber) {
vector<int> temp;
if(root == NULL) return {};
temp.push_back(root->val);
if(root->val == expectNumber && root->left==NULL && root->right == NULL) res.push_back(temp);
if(root->left != NULL) find(root->left,temp,expectNumber);
if(root->right != NULL) find(root->right,temp,expectNumber);
return res;
}
};