Skip to content

Commit 3ead193

Browse files
committed
Done Node and Insert method
1 parent 817c274 commit 3ead193

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

data_structures/AVL/AVL.py

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
'''
2+
A AVL tree
3+
'''
4+
5+
6+
class Node:
7+
8+
def __init__(self, label):
9+
self.label = label
10+
self.left = None
11+
self.rigt = None
12+
self.parent = None
13+
self.height = 0
14+
15+
def getLabel(self):
16+
return self.label
17+
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+
27+
def getRight(self):
28+
return self.rigt
29+
30+
def setRight(self, right):
31+
self.rigt = right
32+
33+
def getParent(self):
34+
return self.parent
35+
36+
def setParent(self, parent):
37+
self.parent = parent
38+
39+
def setHeight(self, height):
40+
self.height = height
41+
42+
def getHeight(self, height):
43+
return self.height
44+
45+
46+
class AVL:
47+
48+
def __init__(self):
49+
self.root = None
50+
self.size = 0
51+
52+
# def __init__(self, root):
53+
# self.root = root
54+
# self.size = 1
55+
56+
def insert(self, value):
57+
node = Node(value)
58+
if self.root is None:
59+
self.root = node
60+
self.size = 1
61+
else:
62+
# Same as Binary Tree
63+
dad_node = None
64+
curr_node = self.root
65+
66+
while True:
67+
if curr_node is not None:
68+
69+
dad_node = curr_node
70+
71+
if node.getLabel() < curr_node.getLabel():
72+
curr_node = curr_node.getLeft()
73+
else:
74+
curr_node = curr_node.getRight()
75+
else:
76+
if node.getLabel() < dad_node.getLabel():
77+
dad_node.setLeft(node)
78+
dad_node.setHeight(dad_node.getHeight() + 1)
79+
80+
if (dad_node.getRight().getHeight() -
81+
dad_node.getLeft.getHeight() > 1):
82+
self.rebalance(dad_node)
83+
84+
else:
85+
dad_node.setRight(node)
86+
dad_node.setHeight(dad_node.getHeight() + 1)
87+
88+
if (dad_node.getRight().getHeight() -
89+
dad_node.getLeft.getHeight() > 1):
90+
self.rebalance(dad_node)
91+
break
92+
93+
def rebalance(self, node):
94+
pass
95+
96+
def rotate_left(self, node):
97+
pass
98+
99+
def rotate_right(self, node):
100+
pass
101+
102+
def double_rotate_left(self, node):
103+
pass
104+
105+
def double_rotate_righs(self, node):
106+
pass

0 commit comments

Comments
 (0)