/** * 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; } };