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,
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool hasPathSum(struct TreeNode* root, int sum,vector<int> &myVec,vector<vector<int>> &listVec) {
if(root == NULL){
return false;
}
//this node is leaf node
if((!root->left)&&(!root->right)){
if(sum == root->val){
//push this vector;
myVec.push_back(root->val);
listVec.push_back(myVec);
myVec.pop_back();
return true;
}
}//leaf Node
if(root->left){
myVec.push_back(root->val);
hasPathSum(root->left,sum-root->val,myVec,listVec);
myVec.pop_back();
}
if(root->right){
myVec.push_back(root->val);
hasPathSum(root->right,sum-root->val,myVec,listVec);
myVec.pop_back();
}
return true;
}
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> result;
vector<int> myVec;
hasPathSum(root,sum,myVec,result);
return result;
}
};