Skip to content

Commit 390562a

Browse files
author
Sagar Paul
committed
BST
1 parent 176503e commit 390562a

File tree

3 files changed

+118
-4
lines changed

3 files changed

+118
-4
lines changed

BST/01.py

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ def __init__(self,key):
33
self.key = key
44
self.lchild = None
55
self.rchild = None
6+
67
def insert(self,data):
78
if self.key is None:
89
self.key = data
@@ -21,6 +22,7 @@ def insert(self,data):
2122
else:
2223
self.lchild = BST(data)
2324
return
25+
2426
def search(self,data):
2527
if self.key == data:
2628
print("Node is Found")
@@ -36,16 +38,85 @@ def search(self,data):
3638
delf.lchild.search(data)
3739
else:
3840
print("Node is NOT found")
41+
def preorder(self):
42+
print(self.key, end=", ")
43+
if self.lchild:
44+
self.lchild.preorder()
45+
if self.rchild:
46+
self.rchild.preorder()
47+
48+
def inorder(self):
49+
if self.lchild:
50+
self.lchild.inorder()
51+
print(self.key, end=", ")
52+
if self.rchild:
53+
self.rchild.inorder()
54+
55+
def postorder(self):
56+
if self.lchild:
57+
self.lchild.postorder()
58+
if self.rchild:
59+
self.rchild.postorder()
60+
print(self.key, end=", ")
3961

62+
def delete(self,data):
63+
if self.key is None:
64+
print("BST is empty")
65+
if data<self.key:
66+
self.lchild = self.lchild.delete()
4067

41-
68+
def delete(self,data):
69+
if self.key is None:
70+
print("Tree is Empty!")
71+
elif data > self.key:
72+
if self.rchild:
73+
self.rchild = self.rchild.delete(data)
74+
else:
75+
print("Node is Not Present ")
76+
elif data < self.key:
77+
if self.lchild:
78+
self.lchild = self.lchild.delete(data)
79+
else:
80+
print("Node is not present")
81+
else:
82+
if self.lchild is None:
83+
temp = self.rchild
84+
self = None
85+
return temp
86+
if self.rchild is None:
87+
temp = self.lchild
88+
self = None
89+
return temp
90+
node = self.rchild
91+
while node.lchild:
92+
node = node.lchild
93+
self.key = node.key
94+
self.rchild = self.rchild.delete(node.key)
95+
return self
96+
97+
98+
99+
100+
101+
42102
root = BST(10)
43-
ll = [1,2,33,23,12,33,12,12,31,12,222,333,456,6667,77777,51]
103+
ll = [1,2,33,23,12,33,12,456,66, 51]
44104
for i in ll:
45105
root.insert(i)
46-
root.search(222)
106+
print("Preorder")
107+
root.preorder()
108+
'''
109+
print()
110+
print("Inorder")
111+
root.inorder()
47112
48-
113+
print()
114+
print("Postorder")
115+
root.postorder()
49116
117+
'''
118+
print("----------------------")
119+
root.delete(51)
120+
root.preorder()
50121

51122

BST/02.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class BST:
2+
3+
def __init__(self,key): # Constractor of the class
4+
self.key = key
5+
self.lchild = None
6+
self.rchild = None
7+
8+
# Insert Operation to a Binary Search Tree
9+
10+
def insert(self, data):
11+
if self.key is None:
12+
self.key = data
13+
return
14+
elif self.key == data:
15+
return
16+
elif self.key > data:
17+
if self.lchild:
18+
self.lchild.insert(data)
19+
else:
20+
self.lchild = BST(data)
21+
return
22+
elif self.key < data:
23+
if self.rchild:
24+
self.rchild.insert(data)
25+
else:
26+
self.rchild = BST(data)
27+
return
28+
29+
# Search a node in a binary Search Tree
30+
31+
def search(self, data):
32+
if self.key is None:
33+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
d = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
2+
n = input() # CMXCVIII = 998
3+
ans = d[n[0]]
4+
for i in range(1,len(n)):
5+
if d[n[i-1]] < d[n[i]]:
6+
ans += d[n[i]] - d[n[i-1]]*2
7+
else:
8+
ans += d[n[i]]
9+
10+
print(ans)

0 commit comments

Comments
 (0)