Tree
Tree
def __init__(self,key):
self.key=key
self.left=None
self.right=None
def insert(self,data):
if self.key is None:
self.key= data
else:
if self.key>data:
if self.left is not None:
self.left.insert(data)
else:
self.left=BST(data)
if self.key<data:
if self.right is not None:
self.right.insert(data)
else:
self.right=BST(data)
def search(self,data):
if self.key is None:
print("Tree is empty!")
else:
if self.key == data:
print("Data present!")
elif self.key>=data:
if self.left:
self.left.search(data)
else:
print("Data not present!")
else:
if self.key <= data:
if self.right:
self.right.search(data)
else:
print("Data not present")
def preOrder(self):
if self.key is None:
print("Tree is not present!")
else:
print(self.key,end=",")
if self.left:
self.left.preOrder()
if self.right:
self.right.preOrder()
def inOrder(self):
if self.key is None:
print("Tree is not present!")
else:
if self.left:
self.left.inOrder()
print(self.key, end=",")
if self.right:
self.right.inOrder()
def postOrder(self):
if self.key is None:
print("Tree is not present!")
else:
if self.left:
self.left.postOrder()
if self.right:
self.right.postOrder()
print(self.key, end=",")
def delete_wo_rootnode(self,data):
if self.key is None:
print("Tree is empty! Can't Delete.")
elif self.key>data:
if self.left:
self.left = self.left.delete_wo_rootnode(data)
else:
print("Data not present in tree!")
elif self.key<data:
if self.right:
self.right=self.right.delete_wo_rootnode(data)
else:
print("Data not present in tree!")
else:
if self.left is None:
temp=self.right
self = None
return temp
if self.right is None:
temp=self.left
self=None
return temp
node = self.right
while node.left:
node=node.left
self.key=node.key
self.right=self.right.delete_wo_rootnode(node.key)
return self
def minimum(self):
current=self
while current.left:
current=current.left
print(current.key)
def maximum(self):
current=self
while current.right:
current=current.right
print(current.key)
def count(node):
if node is None:
return 0
else:
return 1+count(node.left)+count(node.right)
root=BST(10)
li=[1,3,6,98,12,10]
for i in li:
root.insert(i)
'''
root.search(12)
print("PreOrder")
root.preOrder()
print("")
print("Inorder")
root.inOrder()
print("")
print("Postorder")
root.postOrder()
root.delete(10)
print(" ")
print("Inorder-After Deletion")
root.inOrder()
print(" ")
if count(root)>1:
root.delete(10,root.key)
else:
print("Can't delete tree having only one node")
'''
#root.delete_wo_rootnode(98)
root.inOrder()
print()
root.preOrder()
print("")
root.minimum()
root.maximum()