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