From 39bdc356cb17bb504e7e4d8663db88f858104405 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: Thu, 9 Apr 2026 19:22:46 +0300 Subject: [PATCH 1/2] feat: 700. Search in a Binary Search Tree --- src/binary_search_tree/__init__.py | 0 .../search_in_a_binary_search_tree/__init__.py | 0 .../search_in_a_binary_search_tree/solution.py | 15 +++++++++++++++ tests/test_search_in_a_binary_search_tree.py | 13 +++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 src/binary_search_tree/__init__.py create mode 100644 src/binary_search_tree/search_in_a_binary_search_tree/__init__.py create mode 100644 src/binary_search_tree/search_in_a_binary_search_tree/solution.py create mode 100644 tests/test_search_in_a_binary_search_tree.py diff --git a/src/binary_search_tree/__init__.py b/src/binary_search_tree/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/binary_search_tree/search_in_a_binary_search_tree/__init__.py b/src/binary_search_tree/search_in_a_binary_search_tree/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/binary_search_tree/search_in_a_binary_search_tree/solution.py b/src/binary_search_tree/search_in_a_binary_search_tree/solution.py new file mode 100644 index 0000000..7f6353d --- /dev/null +++ b/src/binary_search_tree/search_in_a_binary_search_tree/solution.py @@ -0,0 +1,15 @@ +from typing import Optional +from structures import TreeNode + + +class Solution: + def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]: + if not root: + return None + + if root.val == val: + return root + elif root.val > val: + return self.searchBST(root.left, val) + else: + return self.searchBST(root.right, val) diff --git a/tests/test_search_in_a_binary_search_tree.py b/tests/test_search_in_a_binary_search_tree.py new file mode 100644 index 0000000..85a2245 --- /dev/null +++ b/tests/test_search_in_a_binary_search_tree.py @@ -0,0 +1,13 @@ +import pytest +from src.binary_search_tree.search_in_a_binary_search_tree.solution import Solution +from test_utils import TreeBuilder + + +@pytest.mark.parametrize( + "root, val, expected", + [([4, 2, 7, 1, 3], 2, [2, 1, 3]), ([4, 2, 7, 1, 3], 5, [])], +) +def test_max_depth(root, expected): + root = TreeBuilder.from_list(root) + solution = Solution() + assert solution.searchBST(root) == expected From 1f855ff580a9715df4b28bba753f870368f8eeca 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: Thu, 9 Apr 2026 19:29:31 +0300 Subject: [PATCH 2/2] fix: fix tests --- test_utils/tree_builder.py | 22 ++++++++++++++++++++ tests/test_search_in_a_binary_search_tree.py | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/test_utils/tree_builder.py b/test_utils/tree_builder.py index 50c1ad9..308b4a0 100644 --- a/test_utils/tree_builder.py +++ b/test_utils/tree_builder.py @@ -27,3 +27,25 @@ def from_list(values: list[Optional[int]]) -> Optional[TreeNode]: i += 1 return root + + @staticmethod + def to_list(root: Optional[TreeNode]) -> list[Optional[int]]: + if not root: + return [] + + result = [] + queue = deque([root]) + + while queue: + node = queue.popleft() + if node: + result.append(node.val) + queue.append(node.left) + queue.append(node.right) + else: + result.append(None) + + while result and result[-1] is None: + result.pop() + + return result diff --git a/tests/test_search_in_a_binary_search_tree.py b/tests/test_search_in_a_binary_search_tree.py index 85a2245..10e9634 100644 --- a/tests/test_search_in_a_binary_search_tree.py +++ b/tests/test_search_in_a_binary_search_tree.py @@ -7,7 +7,7 @@ "root, val, expected", [([4, 2, 7, 1, 3], 2, [2, 1, 3]), ([4, 2, 7, 1, 3], 5, [])], ) -def test_max_depth(root, expected): +def test_search_bst(root, val, expected): root = TreeBuilder.from_list(root) solution = Solution() - assert solution.searchBST(root) == expected + assert TreeBuilder.to_list(solution.searchBST(root, val)) == expected