
tree
class Node:
def __init__(self,data):
self.data=data
self.left=None
self.right=None
def insert(root,value):
if(root is None):
return Node(value)
if(root.data>value):
root.left=insert(root.left,value)
else:
root.right=insert(root.right,value)
return root
def deleteNode(root,deleteValue):
if(root is None):
return root
if(root.data>deleteValue):
root.left=deleteNode(root.left,deleteValue)
elif (root.data<deleteValue):
root.right=deleteNode(root.right,deleteValue)
else:
if(root.left is None):
return root.right
elif(root.right is None):
return root.left
else:
succassor=get_succassor(root)
root.data=succassor.data
root.right=deleteNode(root.right,succassor.data)
return root
def get_succassor(root):
root=root.right
while root is not None and root.left is not None:
root=root.left
return root
def serach_tree(root,value):
if root is None:
return print("Element not found")
if(root.data==value):
return print("Element is found")
if(root.data>value):
return serach_tree(root.left,value)
if(root.data<value):
return serach_tree(root.right,value)
return print("Element is not found")
def in_order_travarsal(root):
if(root is None):
return
in_order_travarsal(root.left)
print(root.data,end=" ")
in_order_travarsal(root.right)
root=insert(None,20)
root=insert(root,15)
root=insert(root,30)
root=insert(root,25)
root=insert(root,21)
root=insert(root,40)
root=insert(root,11)
root=insert(root,23)
root=insert(root,50)
# serach_tree(root,111)
# root=deleteNode(root,50)
root=deleteNode(root,30)
in_order_travarsal(root)