02. Count Nodes Equal to Average of Subtree
Last updated
Was this helpful?
Last updated
Was this helpful?
The problem can be found at the following link:
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 in l
.
Recursively traverse the right subtree by calling porder(root->right, sum, count)
and store the result in r
.
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 the res
counter.
Return a pair {sum, count} representing the sum and count of values in the current subtree.
Time Complexity: O(n)
Auxiliary Space Complexity: O(n)
For discussions, questions, or doubts related to this solution, please visit our . 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 repository.