LeetCode 2265. Count Nodes Equal to Average of Subtree Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
2265. Count Nodes Equal to Average of Subtree

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

Solutions

Solution 1: DFS

We design a function dfs, which calculates the sum and the number of nodes of the subtree rooted at the current node.

The execution process of the function dfs is as follows:

  • If the current node is null, return (0, 0).
  • Otherwise, we recursively calculate the sum and the number of nodes of the left and right subtrees, denoted as (ls, ln) and (rs, rn), respectively. Then, the sum s and the number of nodes n of the subtree rooted at the current node are ls + rs + root.val and ln + rn + 1, respectively. If s / n = root.val, it means the current node meets the requirement of the problem, and we increment the answer ans by 1.
  • Finally, the function dfs returns s and n.

We initialize the answer ans to 0, then call the dfs function, and finally return the answer ans.

The time complexity is O(n), and the space complexity is O(n). Here, n represents the number of nodes in the binary tree.

PythonJavaC++GoTypeScript
class Solution: def averageOfSubtree(self, root: TreeNode) -> int: def dfs(root) -> tuple: if not root: return 0, 0 ls, ln = dfs(root.left) rs, rn = dfs(root.right) s = ls + rs + root.val n = ln + rn + 1 nonlocal ans ans += int(s // n == root.val) return s, n ans = 0 dfs(root) return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !