1- class Node :
2- def __init__ (self , data ):
3- self .data = data
4- self .left = None
5- self .right = None
6-
7- # Function to insert a new node in the BST
8- def insert (root , data ):
9- if root is None :
10- return Node (data )
11- if data < root .data :
12- root .left = insert (root .left , data )
13- else :
14- root .right = insert (root .right , data )
15- return root
16-
17- # Function to perform in-order traversal of the BST
18- def in_order_traversal (root ):
19- if root is not None :
20- in_order_traversal (root .left )
21- print (root .data , end = ' ' )
22- in_order_traversal (root .right )
23-
24- # Function to find the minimum value node in a given subtree
25- def min_value_node (node ):
26- current = node
27- while current and current .left is not None :
28- current = current .left
29- return current
30-
31- # Function to delete a node from the BST
32- def delete_node (root , key ):
33- if root is None :
34- return root
35-
36- if key < root .data :
37- root .left = delete_node (root .left , key )
38- elif key > root .data :
39- root .right = delete_node (root .right , key )
40- else :
41- # Node with only one child or no child
42- if root .left is None :
43- temp = root .right
44- root = None # Clear the node
45- return temp
46- elif root .right is None :
47- temp = root .left
48- root = None # Clear the node
49- return temp
50-
51- # Node with two children: get the inorder successor
52- temp = min_value_node (root .right )
53- root .data = temp .data
54- root .right = delete_node (root .right , temp .data )
55-
56- return root
57-
58- def main ():
59- root = None
60-
61- # Inserting nodes into the BST
62- root = insert (root , 50 )
63- insert (root , 30 )
64- insert (root , 20 )
65- insert (root , 40 )
66- insert (root , 70 )
67- insert (root , 60 )
68- insert (root , 80 )
69-
70- print ("Inorder Traversal of the BST before deletion:" )
71- in_order_traversal (root )
72- print ("\n " )
73-
74- # Deleting a node
75- key = int (input ("Enter the Key Element to be deleted: " ))
76- root = delete_node (root , key )
77- print (f"Element ({ key } ) Deleted" )
78- print (f"Inorder Traversal of the BST after deletion of { key } :" )
79- in_order_traversal (root )
80- print ("\n " )
81-
82- if __name__ == "__main__" :
83- main ()
1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ # Function to insert a new node in the BST
9+ def insert (root , data ):
10+ if root is None :
11+ return Node (data )
12+ if data < root .data :
13+ root .left = insert (root .left , data )
14+ else :
15+ root .right = insert (root .right , data )
16+ return root
17+
18+
19+ # Function to perform in-order traversal of the BST
20+ def in_order_traversal (root ):
21+ if root is not None :
22+ in_order_traversal (root .left )
23+ print (root .data , end = " " )
24+ in_order_traversal (root .right )
25+
26+
27+ # Function to find the minimum value node in a given subtree
28+ def min_value_node (node ):
29+ current = node
30+ while current and current .left is not None :
31+ current = current .left
32+ return current
33+
34+
35+ # Function to delete a node from the BST
36+ def delete_node (root , key ):
37+ if root is None :
38+ return root
39+
40+ if key < root .data :
41+ root .left = delete_node (root .left , key )
42+ elif key > root .data :
43+ root .right = delete_node (root .right , key )
44+ else :
45+ # Node with only one child or no child
46+ if root .left is None :
47+ temp = root .right
48+ root = None # Clear the node
49+ return temp
50+ elif root .right is None :
51+ temp = root .left
52+ root = None # Clear the node
53+ return temp
54+
55+ # Node with two children: get the inorder successor
56+ temp = min_value_node (root .right )
57+ root .data = temp .data
58+ root .right = delete_node (root .right , temp .data )
59+
60+ return root
61+
62+
63+ def main ():
64+ root = None
65+
66+ # Inserting nodes into the BST
67+ root = insert (root , 50 )
68+ insert (root , 30 )
69+ insert (root , 20 )
70+ insert (root , 40 )
71+ insert (root , 70 )
72+ insert (root , 60 )
73+ insert (root , 80 )
74+
75+ print ("Inorder Traversal of the BST before deletion:" )
76+ in_order_traversal (root )
77+ print ("\n " )
78+
79+ # Deleting a node
80+ key = int (input ("Enter the Key Element to be deleted: " ))
81+ root = delete_node (root , key )
82+ print (f"Element ({ key } ) Deleted" )
83+ print (f"Inorder Traversal of the BST after deletion of { key } :" )
84+ in_order_traversal (root )
85+ print ("\n " )
86+
87+
88+ if __name__ == "__main__" :
89+ main ()
0 commit comments