@@ -198,6 +198,30 @@ def insert(self, *values) -> Self:
198
198
return self
199
199
200
200
def search (self , value ) -> Node | None :
201
+ """
202
+ >>> tree = BinarySearchTree().insert(10, 20, 30, 40, 50)
203
+ >>> tree.search(10)
204
+ {'10': (None, {'20': (None, {'30': (None, {'40': (None, 50)})})})}
205
+ >>> tree.search(20)
206
+ {'20': (None, {'30': (None, {'40': (None, 50)})})}
207
+ >>> tree.search(30)
208
+ {'30': (None, {'40': (None, 50)})}
209
+ >>> tree.search(40)
210
+ {'40': (None, 50)}
211
+ >>> tree.search(50)
212
+ 50
213
+ >>> tree.search(5) is None # element not present
214
+ True
215
+ >>> tree.search(0) is None # element not present
216
+ True
217
+ >>> tree.search(-5) is None # element not present
218
+ True
219
+ >>> BinarySearchTree().search(10)
220
+ Traceback (most recent call last):
221
+ ...
222
+ IndexError: Warning: Tree is empty! please use another.
223
+ """
224
+
201
225
if self .empty ():
202
226
raise IndexError ("Warning: Tree is empty! please use another." )
203
227
else :
@@ -210,6 +234,15 @@ def search(self, value) -> Node | None:
210
234
def get_max (self , node : Node | None = None ) -> Node | None :
211
235
"""
212
236
We go deep on the right branch
237
+
238
+ >>> BinarySearchTree().insert(10, 20, 30, 40, 50).get_max()
239
+ 50
240
+ >>> BinarySearchTree().insert(-5, -1, 0.1, -0.3, -4.5).get_max()
241
+ {'0.1': (-0.3, None)}
242
+ >>> BinarySearchTree().insert(1, 78.3, 30, 74.0, 1).get_max()
243
+ {'78.3': ({'30': (1, 74.0)}, None)}
244
+ >>> BinarySearchTree().insert(1, 783, 30, 740, 1).get_max()
245
+ {'783': ({'30': (1, 740)}, None)}
213
246
"""
214
247
if node is None :
215
248
if self .root is None :
@@ -224,6 +257,15 @@ def get_max(self, node: Node | None = None) -> Node | None:
224
257
def get_min (self , node : Node | None = None ) -> Node | None :
225
258
"""
226
259
We go deep on the left branch
260
+
261
+ >>> BinarySearchTree().insert(10, 20, 30, 40, 50).get_min()
262
+ {'10': (None, {'20': (None, {'30': (None, {'40': (None, 50)})})})}
263
+ >>> BinarySearchTree().insert(-5, -1, 0, -0.3, -4.5).get_min()
264
+ {'-5': (None, {'-1': (-4.5, {'0': (-0.3, None)})})}
265
+ >>> BinarySearchTree().insert(1, 78.3, 30, 74.0, 1).get_min()
266
+ {'1': (None, {'78.3': ({'30': (1, 74.0)}, None)})}
267
+ >>> BinarySearchTree().insert(1, 783, 30, 740, 1).get_min()
268
+ {'1': (None, {'783': ({'30': (1, 740)}, None)})}
227
269
"""
228
270
if node is None :
229
271
node = self .root
0 commit comments