/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @param sum int整型 * @return int整型vector<vector<>> */ vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<int>> res; vector<int> temp; findPath(root, sum, temp, res); return res; } private: void findPath(TreeNode* node, int sum, vector<int> &temp,vector<vector<int>> &vec){ if(!node) return; temp.push_back(node->val); if(!node->left && !node->right){ if(node->val==sum){ vec.push_back(temp); return; } else{ return; } } if(node->left){ findPath(node->left,sum-node->val,temp,vec); temp.pop_back(); } if(node->right){ findPath(node->right,sum-node->val,temp,vec); temp.pop_back(); } } };