Skip to content

Commit 325deda

Browse files
Merge pull request TheAlgorithms#95 from rafaelleru/master
fix some style errors in Binary Tree
2 parents bd67dcf + f65fe8c commit 325deda

File tree

2 files changed

+137
-4
lines changed

2 files changed

+137
-4
lines changed

data_structures/AVL/AVL.py

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
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 insert(self, value):
53+
node = Node(value)
54+
if self.root is None:
55+
self.root = node
56+
self.size = 1
57+
else:
58+
# Same as Binary Tree
59+
dad_node = None
60+
curr_node = self.root
61+
62+
while True:
63+
if curr_node is not None:
64+
65+
dad_node = curr_node
66+
67+
if node.getLabel() < curr_node.getLabel():
68+
curr_node = curr_node.getLeft()
69+
else:
70+
curr_node = curr_node.getRight()
71+
else:
72+
if node.getLabel() < dad_node.getLabel():
73+
dad_node.setLeft(node)
74+
dad_node.setHeight(dad_node.getHeight() + 1)
75+
76+
if (dad_node.getRight().getHeight() -
77+
dad_node.getLeft.getHeight() > 1):
78+
self.rebalance(dad_node)
79+
80+
else:
81+
dad_node.setRight(node)
82+
dad_node.setHeight(dad_node.getHeight() + 1)
83+
84+
if (dad_node.getRight().getHeight() -
85+
dad_node.getLeft.getHeight() > 1):
86+
self.rebalance(dad_node)
87+
break
88+
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
106+
pass
107+
108+
def rotate_left(self, node):
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)
116+
117+
def rotate_right(self, node):
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)
124+
125+
def double_rotate_left(self, node):
126+
self.rotate_right(node.getRight().getRight())
127+
self.rotate_left(node)
128+
129+
def double_rotate_right(self, node):
130+
self.rotate_left(node.getLeft().getLeft())
131+
self.rotate_right(node)

data_structures/Binary Tree/binary_seach_tree.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'''
22
A binary search Tree
33
'''
4+
5+
46
class Node:
57

68
def __init__(self, label):
@@ -34,7 +36,7 @@ def __init__(self):
3436

3537
def insert(self, label):
3638

37-
#Create a new Node
39+
# Create a new Node
3840

3941
node = Node(label)
4042

@@ -45,7 +47,7 @@ def insert(self, label):
4547
curr_node = self.root
4648

4749
while True:
48-
if curr_node != None:
50+
if curr_node is not None:
4951

5052
dad_node = curr_node
5153

@@ -61,12 +63,12 @@ def insert(self, label):
6163
break
6264

6365
def empty(self):
64-
if self.root == None:
66+
if self.root is None:
6567
return True
6668
return False
6769

6870
def preShow(self, curr_node):
69-
if curr_node != None:
71+
if curr_node is None:
7072
print(curr_node.getLabel(), end=" ")
7173

7274
self.preShow(curr_node.getLeft())

0 commit comments

Comments
 (0)