02. Count Nodes Equal to Average of Subtree
The problem can be found at the following link: Question Link
My Approach
Start with a global variable
int res = 0;
to keep track of the count of valid subtrees where the average of values is equal to the root's value.Inside the
averageOfSubtree
function:Call the helper function
porder(root, 0, 0)
to initiate the processing of the binary tree. Pass the root node, an initial sum of 0, and an initial count of 0.
Within the
porder
function:Check if the current node
root
is null. If it is, return a pair {0, 0} representing the sum and count for an empty subtree.
Recursively traverse the left subtree by calling
porder(root->left, sum, count)
and store the result inl
.Recursively traverse the right subtree by calling
porder(root->right, sum, count)
and store the result inr
.Update
sum
to be the sum of the values in the left subtree, the value at the current node, and the sum of values in the right subtree:sum = l.first + root->val + r.first
.Update
count
to be the count of values in the left subtree, plus one for the current node, and the count of values in the right subtree:count = l.second + 1 + r.second
.Check if the average of the values in the current subtree (sum / count) is equal to the value at the root of the subtree (
root->val
). If it is, increment theres
counter.Return a pair {sum, count} representing the sum and count of values in the current subtree.
Time and Auxiliary Space Complexity
Time Complexity:
O(n)
Auxiliary Space Complexity:
O(n)
Code (C++)
Contribution and Support
For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star
to the rishabhv12/Daily-Leetcode-Solution repository.
Last updated