From b47b77778f1c851a60ccf0f6fb264c2c94ee4d5a Mon Sep 17 00:00:00 2001 From: Suyash Dongre <109069262+Suyashd999@users.noreply.github.com> Date: Mon, 6 Nov 2023 16:30:35 +0530 Subject: [PATCH] Added doctest to binary_search_tree.py --- .../binary_tree/binary_search_tree.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/data_structures/binary_tree/binary_search_tree.py b/data_structures/binary_tree/binary_search_tree.py index f08f278a8e47..428a4169be01 100644 --- a/data_structures/binary_tree/binary_search_tree.py +++ b/data_structures/binary_tree/binary_search_tree.py @@ -198,6 +198,30 @@ def insert(self, *values) -> Self: return self def search(self, value) -> Node | None: + """ + >>> bst = BinarySearchTree().insert(10,20,30,40,50) + >>> bst.search(10) + {'10': (None, {'20': (None, {'30': (None, {'40': (None, 50)})})})} + >>> bst.search(20) + {'20': (None, {'30': (None, {'40': (None, 50)})})} + >>> bst.search(30) + {'30': (None, {'40': (None, 50)})} + >>> bst.search(40) + {'40': (None, 50)} + >>> bst.search(50) + 50 + >>> bst.search(0) # element not present + + >>> bst.search(-5 ) # element not present + + >>> bst.search(5) # element not present + + >>> bst= BinarySearchTree().search(10) + Traceback (most recent call last): + ... + IndexError: Warning: Tree is empty! please use another. + """ + if self.empty(): raise IndexError("Warning: Tree is empty! please use another.") else: @@ -210,6 +234,15 @@ def search(self, value) -> Node | None: def get_max(self, node: Node | None = None) -> Node | None: """ We go deep on the right branch + + >>> BinarySearchTree().insert(10,20,30,40,50).get_max() + 50 + >>> BinarySearchTree().insert(-5,-1,0,-0.3,-4.5).get_max() + {'0': (-0.3, None)} + >>> BinarySearchTree().insert(1,78.3,30,74.0,1).get_max() + {'78.3': ({'30': (1, 74.0)}, None)} + >>> BinarySearchTree().insert(1,783,30,740,1).get_max() + {'783': ({'30': (1, 740)}, None)} """ if node is None: if self.root is None: @@ -224,6 +257,15 @@ def get_max(self, node: Node | None = None) -> Node | None: def get_min(self, node: Node | None = None) -> Node | None: """ We go deep on the left branch + + >>> BinarySearchTree().insert(10,20,30,40,50).get_min() + {'10': (None, {'20': (None, {'30': (None, {'40': (None, 50)})})})} + >>> BinarySearchTree().insert(-5,-1,0,-0.3,-4.5).get_min() + {'-5': (None, {'-1': (-4.5, {'0': (-0.3, None)})})} + >>> BinarySearchTree().insert(1,78.3,30,74.0,1).get_min() + {'1': (None, {'78.3': ({'30': (1, 74.0)}, None)})} + >>> BinarySearchTree().insert(1,783,30,740,1).get_min() + {'1': (None, {'783': ({'30': (1, 740)}, None)})} """ if node is None: node = self.root