Count Number of SubTrees having given Sum
Problem Statement - link #
Given a binary tree and an integer X
. Your task is to complete the function countSubtreesWithSumX()
that returns the count of the number of subtress having total node’s data sum equal to the value X
. Example: For the tree given below:
5
/ \
-10 3
/ \ / \
9 8 -4 7
Subtree with sum 7:
-10
/ \
9 8
and one node 7.
Your Task: You don’t need to read input or print anything. Your task is to complete the function countSubtreesWithSumX()
which takes the root node and an integer X
as inputs and returns the number of subtrees of the given Binary Tree having sum exactly equal to X
.
Expected Time Complexity: O(N)
Expected Auxiliary Space: O(h)
Examples #
Example 1:
Input:
1
/ \
2 3
X = 5
Output: 0
Explanation: No subtree has sum equal
to 5.
Example 2:
Input:
5
/ \
-10 3
/ \ / \
9 8 -4 7
X = 7
Output: 2
Explanation: Subtrees with sum 7 are
[9, 8, -10] and [7] (refer the example
in the problem description).
Constraints #
1 <= Number of nodes <= 10^3
-10^3 <= Node value <= 10^3
Solutions #
class Solution {
public:
int nitish(Node* root, int x, int &res){
if(!root) return 0;
int l = nitish(root->left,x,res);
int r = nitish(root->right,x,res);
if(l+r+root->data == x) res++;
return l+r+root->data;
}
//Function to count number of subtrees having sum equal to given sum.
int countSubtreesWithSumX(Node* root, int X)
{
// Code here
int res = 0;
nitish(root, X, res);
return res;
}
};