#112 路径总和
class Solution {
public:
bool hasPathSum(TreeNode* root, int sum)
{
if (root == NULL)
return false;
return checker(root, sum);
}
bool checker(TreeNode* root, int sum)
{
sum -= root->val;
if (sum == 0 && root->left == NULL&&root->right == NULL)
return true;
bool l = false, r = false;
if (root->left != NULL)
l = checker(root->left, sum);
if (root->right != NULL)
r = checker(root->right, sum);
return l || r;
}
};
#113 路径总和II
vector<vector<int>> pathSum(TreeNode* root, int sum)
{
vector<vector<int>> ans;
if (root == NULL)
return ans;
helper(ans, root, vector<int>(), sum);
return ans;
}
void helper(vector<vector<int>>& ans, TreeNode* root, vector<int> arr, int sum)
{
sum -= root->val;
arr.push_back(root->val);
if (sum == 0 && root->left == NULL&&root->right == NULL)
{
ans.push_back(arr);
return;
}
if (root->left != NULL)
helper(ans, root->left, arr, sum);
if (root->right != NULL)
helper(ans, root->right, arr, sum);
}