Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and sum
= 22
,
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum
= 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5] ]
class Solution {
public:
vector<vector<int> > pathSum(TreeNode *root, int sum) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > ret;
vector<int> path;
_pathSum(root,sum,path,ret);
return ret;
}
void _pathSum(TreeNode *root, int sum, vector<int> &path, vector<vector<int> >& ret){
if(root==NULL)
return;
if(!root->left && !root->right && root->val==sum){
path.push_back(root->val);
ret.push_back(path);
path.pop_back();
}
if(!root->left && !root->right && root->val!=sum){
return;
}
path.push_back(root->val);
if(root->left)
_pathSum(root->left,sum-root->val,path,ret);
if(root->right)
_pathSum(root->right,sum-root->val,path,ret);
path.pop_back();
}
};