@@ -37,10 +37,10 @@ def set_left(self, node: MyNode | None) -> None: self.left = node
3737 def set_right (self , node : MyNode | None ) -> None : self .right = node
3838 def set_height (self , height : int ) -> None : self .height = height
3939
40- def get_height (node : MyNode | None ) -> int :
40+ def get_height (node : MyNode | None ) -> int :
4141 return node .height if node else 0
4242
43- def my_max (a : int , b : int ) -> int :
43+ def my_max (a : int , b : int ) -> int :
4444 return a if a > b else b
4545
4646def right_rotation (node : MyNode ) -> MyNode :
@@ -70,7 +70,7 @@ def rl_rotation(node: MyNode) -> MyNode:
7070
7171def insert_node (node : MyNode | None , data : Any ) -> MyNode | None :
7272 if not node : return MyNode (data )
73-
73+
7474 if data < node .data :
7575 node .left = insert_node (node .left , data )
7676 if get_height (node .left ) - get_height (node .right ) == 2 :
@@ -79,7 +79,7 @@ def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
7979 node .right = insert_node (node .right , data )
8080 if get_height (node .right ) - get_height (node .left ) == 2 :
8181 node = rl_rotation (node ) if data < node .right .data else left_rotation (node )
82-
82+
8383 node .height = my_max (get_height (node .right ), get_height (node .left )) + 1
8484 return node
8585
@@ -98,50 +98,50 @@ def del_node(root: MyNode, data: Any) -> MyNode | None:
9898 if not root .left : return root
9999 root .left = del_node (root .left , data )
100100 else : root .right = del_node (root .right , data )
101-
101+
102102 if get_height (root .right ) - get_height (root .left ) == 2 :
103103 root = left_rotation (root ) if get_height (root .right .right ) > get_height (root .right .left ) else rl_rotation (root )
104104 elif get_height (root .right ) - get_height (root .left ) == - 2 :
105105 root = right_rotation (root ) if get_height (root .left .left ) > get_height (root .left .right ) else lr_rotation (root )
106-
106+
107107 root .height = my_max (get_height (root .right ), get_height (root .left )) + 1
108108 return root
109109 class AVLtree :
110110 def __init__ (self ) -> None : self .root = None
111111 def get_height (self ) -> int : return get_height (self .root )
112-
112+
113113 def insert (self , data : Any ) -> None :
114114 print (f"insert:{ data } " )
115115 self .root = insert_node (self .root , data )
116-
116+
117117 def del_node (self , data : Any ) -> None :
118118 print (f"delete:{ data } " )
119119 if not self .root : return
120120 self .root = del_node (self .root , data )
121-
121+
122122 def __str__ (self ) -> str :
123123 if not self .root : return ""
124124 q , output , layer , cnt = MyQueue (), "" , self .get_height (), 0
125125 q .push (self .root )
126-
126+
127127 while not q .is_empty ():
128128 node = q .pop ()
129129 space = " " * int (2 ** (layer - 1 ))
130130 output += space + (str (node .data ) if node else "*" ) + space
131131 cnt += 1
132-
132+
133133 if node :
134134 q .push (node .left )
135135 q .push (node .right )
136136 else :
137137 q .push (None )
138138 q .push (None )
139-
139+
140140 if any (cnt == 2 ** i - 1 for i in range (10 )):
141141 layer -= 1
142142 output += "\n "
143143 if layer == 0 : break
144-
144+
145145 return output + "\n " + "*" * 36
146146 def _test () -> None : doctest .testmod ()
147147
@@ -150,11 +150,11 @@ def _test() -> None: doctest.testmod()
150150 t = AVLtree ()
151151 lst = list (range (10 ))
152152 random .shuffle (lst )
153-
153+
154154 for i in lst :
155155 t .insert (i )
156156 print (t )
157-
157+
158158 random .shuffle (lst )
159159 for i in lst :
160160 t .del_node (i )
0 commit comments