/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
vector< vector<int>> ans = {};
vector<int> temp;
vector<vector<int> > FindPath(TreeNode* root, int target) {
dfs(root, target);
return ans;
}
void dfs(TreeNode* root, int target){
if(root == nullptr){
return;
}
if(root->left == nullptr && root->right == nullptr && root->val == target){ //是叶子节点,且刚好
temp.push_back(root->val);
ans.push_back(temp);
temp.pop_back();
return;
}
temp.push_back(root->val); //添加路径
dfs(root->left, target-root->val);
dfs(root->right, target-root->val);
temp.pop_back();
return;
}
};