@@ -12,41 +12,32 @@ def __init__(self, label):
12
12
self .parent = None
13
13
self .height = 0
14
14
15
- def getLabel (self ):
16
- return self .label
15
+ @property
16
+ def right (self ):
17
+ return self .right
17
18
18
- def setLabel (self , label ):
19
- self .label = label
20
-
21
- def getLeft (self ):
22
- return self .left
23
-
24
- def setLeft (self , left ):
25
- self .left = left
26
- self .left .setParent (self )
27
- self .left .setHeight (self .height + 1 )
28
-
29
- def getRight (self ):
30
- return self .rigt
19
+ @right .setter
20
+ def right (self , node ):
21
+ node .parent = self
22
+ self .right = node
31
23
32
- def setRight (self , right ):
33
- self .rigt = right
34
- self .rigt .setParent (self )
35
- self .rigt .setHeight (self .height + 1 )
36
-
37
- def getParent (self ):
24
+ @property
25
+ def left (self ):
38
26
return self .parent
39
27
40
- def setParent ( self , parent ):
41
- self . parent = parent
42
- self . height = ( self . parent . getHeight () + 1 if
43
- ( self .parent is not None ) else 0 )
28
+ @ left . setter
29
+ def left ( self , node ):
30
+ node . parent = self
31
+ self .left = node
44
32
45
- def setHeight (self , height ):
46
- self .height = height
33
+ @property
34
+ def parent (self ):
35
+ return self .parent
47
36
48
- def getHeight (self ):
49
- return self .height
37
+ @parent .setter
38
+ def parent (self , node ):
39
+ self .parent = node
40
+ self .height = self .parent .height + 1
50
41
51
42
52
43
class AVL :
@@ -59,7 +50,7 @@ def insert(self, value):
59
50
node = Node (value )
60
51
if self .root is None :
61
52
self .root = node
62
- self .root .setHeight ( 0 )
53
+ self .root .height = 0
63
54
self .size = 1
64
55
else :
65
56
# Same as Binary Tree
@@ -71,16 +62,18 @@ def insert(self, value):
71
62
72
63
dad_node = curr_node
73
64
74
- if node .getLabel () < curr_node .getLabel () :
75
- curr_node = curr_node .getLeft ()
65
+ if node .label < curr_node .label :
66
+ curr_node = curr_node .left
76
67
else :
77
- curr_node = curr_node .getRight ()
68
+ curr_node = curr_node .rigt
78
69
else :
79
- if node .getLabel () < dad_node .getLabel () :
80
- dad_node .setLeft ( node )
70
+ if node .label < dad_node .label :
71
+ dad_node .left = node
81
72
else :
82
- dad_node .setRight (node )
73
+ dad_node .right = node
74
+
83
75
self .rebalance (dad_node )
76
+ self .size += 1
84
77
break
85
78
86
79
def rebalance (self , node ):
@@ -119,7 +112,6 @@ def rebalance(self, node):
119
112
break
120
113
else :
121
114
self .rotate_right (n )
122
- print (n .getLabel ())
123
115
break
124
116
n = n .getParent ()
125
117
@@ -130,7 +122,6 @@ def rotate_right(self, node):
130
122
n = Node (node .getLabel ())
131
123
n .setRight (node .getRight ())
132
124
n .setLeft (Node (node .getParent ().getLabel ()))
133
- node = n
134
125
135
126
def double_rotate_left (self , node ):
136
127
self .rotate_right (node .getRight ().getRight ())
0 commit comments