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
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
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)