Skip to content

Commit 4a9405e

Browse files
committed
Add Binary Search Tree in data_structures
1 parent 65de84b commit 4a9405e

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,4 @@ ENV/
8888
# Rope project settings
8989
.ropeproject
9090
.idea
91+
.DS_Store
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
'''
2+
A binary search Tree
3+
'''
4+
class Node:
5+
6+
def __init__(self, label):
7+
self.label = label
8+
self.left = None
9+
self.rigt = None
10+
11+
def getLabel(self):
12+
return self.label
13+
14+
def setLabel(self, label):
15+
self.label = label
16+
17+
def getLeft(self):
18+
return self.left
19+
20+
def setLeft(self, left):
21+
self.left = left
22+
23+
def getRight(self):
24+
return self.rigt
25+
26+
def setRight(self, right):
27+
self.rigt = right
28+
29+
30+
class BinarySearchTree:
31+
32+
def __init__(self):
33+
self.root = None
34+
35+
def insert(self, label):
36+
37+
#Create a new Node
38+
39+
node = Node(label)
40+
41+
if self.empty():
42+
self.root = node
43+
else:
44+
dad_node = None
45+
curr_node = self.root
46+
47+
while True:
48+
if curr_node != None:
49+
50+
dad_node = curr_node
51+
52+
if node.getLabel() < curr_node.getLabel():
53+
curr_node = curr_node.getLeft()
54+
else:
55+
curr_node = curr_node.getRight()
56+
else:
57+
if node.getLabel() < dad_node.getLabel():
58+
dad_node.setLeft(node)
59+
else:
60+
dad_node.setRight(node)
61+
break
62+
63+
def empty(self):
64+
if self.root == None:
65+
return True
66+
return False
67+
68+
def preShow(self, curr_node):
69+
if curr_node != None:
70+
print(curr_node.getLabel())
71+
print ('\n')
72+
self.preShow(curr_node.getLeft())
73+
self.preShow(curr_node.getRight())
74+
75+
def getRoot(self):
76+
return self.root
77+
78+
79+
'''
80+
Example
81+
8
82+
/ \
83+
3 10
84+
/ \ \
85+
1 6 14
86+
/ \ /
87+
4 7 13
88+
'''
89+
90+
t = BinarySearchTree()
91+
t.insert(8)
92+
t.insert(3)
93+
t.insert(1)
94+
t.insert(6)
95+
t.insert(4)
96+
t.insert(7)
97+
t.insert(10)
98+
t.insert(14)
99+
t.insert(13)
100+
101+
t.preShow(t.getRoot())

0 commit comments

Comments
 (0)