Given the below binary tree and sum = 22.
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
class Solution
{
public:
bool hasPathSum(TreeNode *root, int sum)
{
if (root == NULL)
{
return false;
}
if (root->left == NULL && root->right == NULL)
{
if (root->val == sum)
{
return true;
}
else
{
return false;
}
}
if(hasPathSum(root->left, sum - root->val)){
return true;
}
if(hasPathSum(root->right, sum - root->val)){
return true;
}
return false;
}
};
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>> k;
vector<int> v;
void hasPath(TreeNode *root, int sum)
{
if (root == NULL)
{
return;
}
v.push_back(root->val);
if (root->left == NULL && root->right == NULL)
{
if (root->val == sum)
{
k.push_back(v);
}
}
hasPath(root->left, sum - root->val);
hasPath(root->right, sum - root->val);
v.pop_back();
return;
}
vector<vector<int>> pathSum(TreeNode *root, int sum)
{
hasPath(root, sum);
return k;
}
};