Skip to content

Commit d8cd33a

Browse files
committed
using python properties
1 parent 67f23f5 commit d8cd33a

File tree

1 file changed

+29
-38
lines changed

1 file changed

+29
-38
lines changed

data_structures/AVL/AVL.py

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,32 @@ def __init__(self, label):
1212
self.parent = None
1313
self.height = 0
1414

15-
def getLabel(self):
16-
return self.label
15+
@property
16+
def right(self):
17+
return self.right
1718

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
3123

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):
3826
return self.parent
3927

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
4432

45-
def setHeight(self, height):
46-
self.height = height
33+
@property
34+
def parent(self):
35+
return self.parent
4736

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
5041

5142

5243
class AVL:
@@ -59,7 +50,7 @@ def insert(self, value):
5950
node = Node(value)
6051
if self.root is None:
6152
self.root = node
62-
self.root.setHeight(0)
53+
self.root.height = 0
6354
self.size = 1
6455
else:
6556
# Same as Binary Tree
@@ -71,16 +62,18 @@ def insert(self, value):
7162

7263
dad_node = curr_node
7364

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
7667
else:
77-
curr_node = curr_node.getRight()
68+
curr_node = curr_node.rigt
7869
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
8172
else:
82-
dad_node.setRight(node)
73+
dad_node.right = node
74+
8375
self.rebalance(dad_node)
76+
self.size += 1
8477
break
8578

8679
def rebalance(self, node):
@@ -119,7 +112,6 @@ def rebalance(self, node):
119112
break
120113
else:
121114
self.rotate_right(n)
122-
print(n.getLabel())
123115
break
124116
n = n.getParent()
125117

@@ -130,7 +122,6 @@ def rotate_right(self, node):
130122
n = Node(node.getLabel())
131123
n.setRight(node.getRight())
132124
n.setLeft(Node(node.getParent().getLabel()))
133-
node = n
134125

135126
def double_rotate_left(self, node):
136127
self.rotate_right(node.getRight().getRight())

0 commit comments

Comments
 (0)