Skip to content

Commit

Permalink
BST
Browse files Browse the repository at this point in the history
  • Loading branch information
Sagar Paul committed Jun 16, 2021
1 parent 176503e commit 390562a
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 4 deletions.
79 changes: 75 additions & 4 deletions BST/01.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ def __init__(self,key):
self.key = key
self.lchild = None
self.rchild = None

def insert(self,data):
if self.key is None:
self.key = data
Expand All @@ -21,6 +22,7 @@ def insert(self,data):
else:
self.lchild = BST(data)
return

def search(self,data):
if self.key == data:
print("Node is Found")
Expand All @@ -36,16 +38,85 @@ def search(self,data):
delf.lchild.search(data)
else:
print("Node is NOT found")
def preorder(self):
print(self.key, end=", ")
if self.lchild:
self.lchild.preorder()
if self.rchild:
self.rchild.preorder()

def inorder(self):
if self.lchild:
self.lchild.inorder()
print(self.key, end=", ")
if self.rchild:
self.rchild.inorder()

def postorder(self):
if self.lchild:
self.lchild.postorder()
if self.rchild:
self.rchild.postorder()
print(self.key, end=", ")

def delete(self,data):
if self.key is None:
print("BST is empty")
if data<self.key:
self.lchild = self.lchild.delete()


def delete(self,data):
if self.key is None:
print("Tree is Empty!")
elif data > self.key:
if self.rchild:
self.rchild = self.rchild.delete(data)
else:
print("Node is Not Present ")
elif data < self.key:
if self.lchild:
self.lchild = self.lchild.delete(data)
else:
print("Node is not present")
else:
if self.lchild is None:
temp = self.rchild
self = None
return temp
if self.rchild is None:
temp = self.lchild
self = None
return temp
node = self.rchild
while node.lchild:
node = node.lchild
self.key = node.key
self.rchild = self.rchild.delete(node.key)
return self






root = BST(10)
ll = [1,2,33,23,12,33,12,12,31,12,222,333,456,6667,77777,51]
ll = [1,2,33,23,12,33,12,456,66, 51]
for i in ll:
root.insert(i)
root.search(222)
print("Preorder")
root.preorder()
'''
print()
print("Inorder")
root.inorder()

print()
print("Postorder")
root.postorder()
'''
print("----------------------")
root.delete(51)
root.preorder()


33 changes: 33 additions & 0 deletions BST/02.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
class BST:

def __init__(self,key): # Constractor of the class
self.key = key
self.lchild = None
self.rchild = None

# Insert Operation to a Binary Search Tree

def insert(self, data):
if self.key is None:
self.key = data
return
elif self.key == data:
return
elif self.key > data:
if self.lchild:
self.lchild.insert(data)
else:
self.lchild = BST(data)
return
elif self.key < data:
if self.rchild:
self.rchild.insert(data)
else:
self.rchild = BST(data)
return

# Search a node in a binary Search Tree

def search(self, data):
if self.key is None:

10 changes: 10 additions & 0 deletions BST/Roman Number to integer conversion.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
d = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
n = input() # CMXCVIII = 998
ans = d[n[0]]
for i in range(1,len(n)):
if d[n[i-1]] < d[n[i]]:
ans += d[n[i]] - d[n[i-1]]*2
else:
ans += d[n[i]]

print(ans)

0 comments on commit 390562a

Please sign in to comment.