@@ -3,6 +3,7 @@ def __init__(self,key):
33 self .key = key
44 self .lchild = None
55 self .rchild = None
6+
67 def insert (self ,data ):
78 if self .key is None :
89 self .key = data
@@ -21,6 +22,7 @@ def insert(self,data):
2122 else :
2223 self .lchild = BST (data )
2324 return
25+
2426 def search (self ,data ):
2527 if self .key == data :
2628 print ("Node is Found" )
@@ -36,16 +38,85 @@ def search(self,data):
3638 delf .lchild .search (data )
3739 else :
3840 print ("Node is NOT found" )
41+ def preorder (self ):
42+ print (self .key , end = ", " )
43+ if self .lchild :
44+ self .lchild .preorder ()
45+ if self .rchild :
46+ self .rchild .preorder ()
47+
48+ def inorder (self ):
49+ if self .lchild :
50+ self .lchild .inorder ()
51+ print (self .key , end = ", " )
52+ if self .rchild :
53+ self .rchild .inorder ()
54+
55+ def postorder (self ):
56+ if self .lchild :
57+ self .lchild .postorder ()
58+ if self .rchild :
59+ self .rchild .postorder ()
60+ print (self .key , end = ", " )
3961
62+ def delete (self ,data ):
63+ if self .key is None :
64+ print ("BST is empty" )
65+ if data < self .key :
66+ self .lchild = self .lchild .delete ()
4067
41-
68+ def delete (self ,data ):
69+ if self .key is None :
70+ print ("Tree is Empty!" )
71+ elif data > self .key :
72+ if self .rchild :
73+ self .rchild = self .rchild .delete (data )
74+ else :
75+ print ("Node is Not Present " )
76+ elif data < self .key :
77+ if self .lchild :
78+ self .lchild = self .lchild .delete (data )
79+ else :
80+ print ("Node is not present" )
81+ else :
82+ if self .lchild is None :
83+ temp = self .rchild
84+ self = None
85+ return temp
86+ if self .rchild is None :
87+ temp = self .lchild
88+ self = None
89+ return temp
90+ node = self .rchild
91+ while node .lchild :
92+ node = node .lchild
93+ self .key = node .key
94+ self .rchild = self .rchild .delete (node .key )
95+ return self
96+
97+
98+
99+
100+
101+
42102root = BST (10 )
43- ll = [1 ,2 ,33 ,23 ,12 ,33 ,12 ,12 , 31 , 12 , 222 , 333 , 456 ,6667 , 77777 , 51 ]
103+ ll = [1 ,2 ,33 ,23 ,12 ,33 ,12 ,456 ,66 , 51 ]
44104for i in ll :
45105 root .insert (i )
46- root .search (222 )
106+ print ("Preorder" )
107+ root .preorder ()
108+ '''
109+ print()
110+ print("Inorder")
111+ root.inorder()
47112
48-
113+ print()
114+ print("Postorder")
115+ root.postorder()
49116
117+ '''
118+ print ("----------------------" )
119+ root .delete (51 )
120+ root .preorder ()
50121
51122
0 commit comments