From a05dabca37bc50559d9693b6063cce1e434a5a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=E1=BB=93=20V=C4=83n=20H=C3=B2a?= <56647826+hovanhoa@users.noreply.github.com> Date: Thu, 2 Nov 2023 10:11:09 +0700 Subject: [PATCH] Time: 54 ms (31.02%), Space: 17.5 MB (83.96%) - LeetHub --- ...count-nodes-equal-to-average-of-subtree.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 2347-count-nodes-equal-to-average-of-subtree/2347-count-nodes-equal-to-average-of-subtree.py diff --git a/2347-count-nodes-equal-to-average-of-subtree/2347-count-nodes-equal-to-average-of-subtree.py b/2347-count-nodes-equal-to-average-of-subtree/2347-count-nodes-equal-to-average-of-subtree.py new file mode 100644 index 0000000..98c0183 --- /dev/null +++ b/2347-count-nodes-equal-to-average-of-subtree/2347-count-nodes-equal-to-average-of-subtree.py @@ -0,0 +1,23 @@ +class Solution: + def averageOfSubtree(self, root: TreeNode) -> int: + result = 0 + + def traverse(node): + nonlocal result + + if not node: + return 0, 0 + + left_sum, left_count = traverse(node.left) + right_sum, right_count = traverse(node.right) + + curr_sum = node.val + left_sum + right_sum + curr_count = 1 + left_count + right_count + + if curr_sum // curr_count == node.val: + result += 1 + + return curr_sum, curr_count + + traverse(root) + return result \ No newline at end of file