Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PROBLEM] 2265. Count Nodes Equal to Average of Subtree #221

Open
godkingjay opened this issue Nov 2, 2023 · 1 comment
Open

[PROBLEM] 2265. Count Nodes Equal to Average of Subtree #221

godkingjay opened this issue Nov 2, 2023 · 1 comment
Labels
difficulty: medium Medium difficulty problem. problem LeetCode problem.

Comments

@godkingjay
Copy link
Owner

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 n elements is the sum of the n elements divided by n and rounded down to the nearest integer.
  • A subtree of root is a tree consisting of root 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

Link

https://leetcode.com/problems/count-nodes-equal-to-average-of-subtree/

@godkingjay godkingjay added problem LeetCode problem. difficulty: medium Medium difficulty problem. labels Nov 2, 2023
@sinhaaayush10
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty: medium Medium difficulty problem. problem LeetCode problem.
Projects
None yet
Development

No branches or pull requests

2 participants