1- """
2- Implementation of an auto-balanced binary tree!
3- For doctests run following command:
4- python3 -m doctest -v avl_tree.py
5- For testing run:
6- python avl_tree.py
7- """
8-
91from __future__ import annotations
102
113import math
124import random
5+ import doctest
136from typing import Any
147
158
@@ -82,9 +75,7 @@ def my_max(a: int, b: int) -> int:
8275 if a > b :
8376 return a
8477 return b
85-
86-
87- def right_rotation (node : MyNode ) -> MyNode :
78+ def right_rotation (node : MyNode ) -> MyNode :
8879 r"""
8980 A B
9081 / \ / \
@@ -105,9 +96,7 @@ def right_rotation(node: MyNode) -> MyNode:
10596 h2 = my_max (get_height (ret .get_right ()), get_height (ret .get_left ())) + 1
10697 ret .set_height (h2 )
10798 return ret
108-
109-
110- def left_rotation (node : MyNode ) -> MyNode :
99+ def left_rotation (node : MyNode ) -> MyNode :
111100 """
112101 a mirror symmetry rotation of the left_rotation
113102 """
@@ -145,9 +134,7 @@ def rl_rotation(node: MyNode) -> MyNode:
145134 assert right_child is not None
146135 node .set_right (right_rotation (right_child ))
147136 return left_rotation (node )
148-
149-
150- def insert_node (node : MyNode | None , data : Any ) -> MyNode | None :
137+ def insert_node (node : MyNode | None , data : Any ) -> MyNode | None :
151138 if node is None :
152139 return MyNode (data )
153140 if data < node .get_data ():
@@ -175,9 +162,7 @@ def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
175162 h1 = my_max (get_height (node .get_right ()), get_height (node .get_left ())) + 1
176163 node .set_height (h1 )
177164 return node
178-
179-
180- def get_right_most (root : MyNode ) -> Any :
165+ def get_right_most (root : MyNode ) -> Any :
181166 while True :
182167 right_child = root .get_right ()
183168 if right_child is None :
@@ -240,9 +225,7 @@ def del_node(root: MyNode, data: Any) -> MyNode | None:
240225 height = my_max (get_height (root .get_right ()), get_height (root .get_left ())) + 1
241226 root .set_height (height )
242227 return root
243-
244-
245- class AVLtree :
228+ class AVLtree :
246229 """
247230 An AVL tree doctest
248231 Examples:
@@ -330,8 +313,6 @@ def __str__(
330313
331314
332315def _test () -> None :
333- import doctest
334-
335316 doctest .testmod ()
336317
337318
0 commit comments