Given the root
of a binary tree and an integer targetSum
, return the number of paths where the sum of the values along the path equals targetSum
.
The path does not need to start or end at the root or a leaf, but it must go downwards (i.e., traveling only from parent nodes to child nodes).
Example 1:
Input: root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8 Output: 3 Explanation: The paths that sum to 8 are shown.
Example 2:
Input: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22 Output: 3
Constraints:
[0, 1000]
.-109 <= Node.val <= 109
-1000 <= targetSum <= 1000
class Solution {
public:
void solve(TreeNode* root,int targetSum,int &path, vector &add)
{
if(root==NULL)
return;
add.push_back(root->val);
solve(root->left,targetSum,path,add);
solve(root->right,targetSum,path,add);
long long sum = 0;
for(int i = add.size()-1; i>=0; i--)
{
sum += add[i];
if(sum==targetSum)
{
path++;
}
}
add.pop_back();
}
int pathSum(TreeNode* root, int targetSum) {
int path = 0;
vector add;
solve(root,targetSum,path,add);
return path;
}
};
Office:- 660, Sector 14A, Vasundhara, Ghaziabad, Uttar Pradesh - 201012, India