LeetCode
LeetCode copied to clipboard
[PROBLEM] 2265. Count Nodes Equal to Average of Subtree
Difficulty
Medium
Problem Description
Given the root of a binary tree, return the number of nodes where the value of the node is equal to the average of the values in its subtree.
Note:
- The average of
nelements is the sum of thenelements divided bynand rounded down to the nearest integer. - A subtree of
rootis a tree consisting ofrootand all of its descendants.
Example 1:
Input: root = [4,8,5,0,1,null,6] Output: 5 Explanation: For the node with value 4: The average of its subtree is (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4. For the node with value 5: The average of its subtree is (5 + 6) / 2 = 11 / 2 = 5. For the node with value 0: The average of its subtree is 0 / 1 = 0. For the node with value 1: The average of its subtree is 1 / 1 = 1. For the node with value 6: The average of its subtree is 6 / 1 = 6.
Example 2:
Input: root = [1] Output: 1 Explanation: For the node with value 1: The average of its subtree is 1 / 1 = 1.
Constraints:
- The number of nodes in the tree is in the range
[1, 1000]. 0 <= Node.val <= 1000
Link
https://leetcode.com/problems/count-nodes-equal-to-average-of-subtree/
Count Nodes Equal to Average of Subtree Solution::- class Solution { public: int result;
pair<int, int> solve(TreeNode* root) {
if(!root)
return {0, 0};
pair<int, int> l = solve(root->left);
pair<int, int> r = solve(root->right);
int leftSum = l.first;
int leftCount = l.second;
int rightSum = r.first;
int rightCount = r.second;
int SUM = leftSum + rightSum + root->val;
int COUNT = leftCount + rightCount + 1;
int avg = SUM/COUNT;
if(avg == root->val) {
result++;
}
return {SUM, COUNT};
}
int averageOfSubtree(TreeNode* root) {
result = 0;
solve(root);
return result;
}
};
Approach-Doing postorder traversal