@@ -49,10 +49,6 @@ def __init__(self):
49
49
self .root = None
50
50
self .size = 0
51
51
52
- # def __init__(self, root):
53
- # self.root = root
54
- # self.size = 1
55
-
56
52
def insert (self , value ):
57
53
node = Node (value )
58
54
if self .root is None :
@@ -91,13 +87,40 @@ def insert(self, value):
91
87
break
92
88
93
89
def rebalance (self , node ):
90
+ if (node .getRight ().getHeight () -
91
+ node .getLeft .getHeight () > 1 ):
92
+ if (node .getRight ().getHeight () >
93
+ node .getLeft .getHeight ()):
94
+ pass
95
+ else :
96
+ pass
97
+ pass
98
+ elif (node .getRight ().getHeight () -
99
+ node .getLeft .getHeight () > 2 ):
100
+ if (node .getRight ().getHeight () >
101
+ node .getLeft .getHeight ()):
102
+ pass
103
+ else :
104
+ pass
105
+ pass
94
106
pass
95
107
96
108
def rotate_left (self , node ):
97
- pass
109
+ # TODO: is this pythonic enought?
110
+ aux = node .getLabel ()
111
+ node = aux .getRight ()
112
+ node .setHeight (node .getHeight () - 1 )
113
+ node .setLeft (Node (aux ))
114
+ node .getLeft ().setHeight (node .getHeight () + 1 )
115
+ node .getRight ().setHeight (node .getRight ().getHeight () - 1 )
98
116
99
117
def rotate_right (self , node ):
100
- pass
118
+ aux = node .getLabel ()
119
+ node = aux .getLeft ()
120
+ node .setHeight (node .getHeight () - 1 )
121
+ node .setRight (Node (aux ))
122
+ node .getLeft ().setHeight (node .getHeight () + 1 )
123
+ node .getLeft ().setHeight (node .getLeft ().getHeight () - 1 )
101
124
102
125
def double_rotate_left (self , node ):
103
126
pass
0 commit comments