2023-11-02 Daily Challenge
Today I have done leetcode's November LeetCoding Challenge with cpp
.
November LeetCoding Challenge 2
Description
Count Nodes Equal to Average of Subtree
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
n
elements is the sum of then
elements divided byn
and rounded down to the nearest integer. - A subtree of
root
is a tree consisting ofroot
and 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
Solution
class Solution {
int answer = 0;
pair<int, int> solve(TreeNode *root) {
if(!root) return {0, 0};
auto [leftCount, leftSum] = solve(root->left);
auto [rightCount, rightSum] = solve(root->right);
int sum = root->val + leftSum + rightSum;
int count = 1 + leftCount + rightCount;
if(sum / count == root->val) {
answer += 1;
}
return {count, sum};
}
public:
int averageOfSubtree(TreeNode* root) {
solve(root);
return answer;
}
};
// Accepted
// 138/138 cases passed (4 ms)
// Your runtime beats 80.67 % of cpp submissions
// Your memory usage beats 34.12 % of cpp submissions (12.3 MB)