logo of Indev blog website
  • Blogs
  • About me

© 2026 Indev— All rights reserved.

Tree

photo of ayan
Ayan Ghanta

5 min read | Jun 24, 2026

Tree

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)