From bbd4185486e945b3bcc688729b4d2785b1725f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=92=D0=B0=D1=81?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D0=B5=D0=B2?= Date: Tue, 7 Apr 2026 19:28:16 +0300 Subject: [PATCH] feat: 1161. Maximum Level Sum of a Binary Tree --- .../__init__.py | 0 .../solution.py | 27 +++++++++++++++++++ ...test_maximum_level_sum_of_a_binary_tree.py | 16 +++++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/__init__.py create mode 100644 src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/solution.py create mode 100644 tests/test_maximum_level_sum_of_a_binary_tree.py diff --git a/src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/__init__.py b/src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/solution.py b/src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/solution.py new file mode 100644 index 0000000..a4c6ab4 --- /dev/null +++ b/src/binary_tree/bfs/maximum_level_sum_of_a_binary_tree/solution.py @@ -0,0 +1,27 @@ +from collections import deque +from typing import Optional +from structures import TreeNode + + +class Solution: + def maxLevelSum(self, root: Optional[TreeNode]) -> int: + curr_lvl = 1 + maximum = float("-inf") + ans = 1 + queue = deque([root]) + + while queue: + curr_sum = 0 + lvl_size = len(queue) + for _ in range(lvl_size): + node = queue.popleft() + curr_sum += node.val + if node.left: + queue.append(node.left) + if node.right: + queue.append(node.right) + if curr_sum > maximum: + maximum = curr_sum + ans = curr_lvl + curr_lvl += 1 + return ans diff --git a/tests/test_maximum_level_sum_of_a_binary_tree.py b/tests/test_maximum_level_sum_of_a_binary_tree.py new file mode 100644 index 0000000..e86efbb --- /dev/null +++ b/tests/test_maximum_level_sum_of_a_binary_tree.py @@ -0,0 +1,16 @@ +import pytest +from src.binary_tree.bfs.maximum_level_sum_of_a_binary_tree.solution import Solution +from test_utils import TreeBuilder + + +@pytest.mark.parametrize( + "root, expected", + [ + ([1, 7, 0, 7, -8, None, None], 2), + ([989, None, 10250, 98693, -89388, None, None, None, -32127], 2), + ], +) +def test_max_depth(root, expected): + root = TreeBuilder.from_list(root) + solution = Solution() + assert solution.maxLevelSum(root) == expected