Question: i have a data structures assignment in binary search trees please use my class methods and attributes and understand it then answer the questions kindly
i have a data structures assignment in binary search trees please use my class methods and attributes and understand it then answer the questions kindly write for each function a main program to test it after implementing each function
note i have a remove function that delete any node and deals with all special cases this is the question :
Remove Min
points
Write a function removeMinself that will remove the minimum and the second minimum from
the current tree if it exists
and this is the class:
class BST:
class Node:
def initself data, leftNone, rightNone:
self.data data
self.left left
self.right right
self.depth
def strself:
return formatselfdata
def initself:
self.root None
def clearself:
self.root None
def isEmptyself:
return self.root is None
def rootValself:
if not self.isEmpty:
return self.root.data
else:
raise TypeErrorNone value"
def rootNodeself:
return self.root
def insertself val:
newNode self.Nodeval None, None
if self.isEmpty:
self.root newNode
return
p None
c self.root
while c is not None:
p c
if val cdata:
c cright
elif val cdata:
c cleft
else:
return
if val pdata:
pright newNode
else:
pleft newNode
def containsself val:
c self.root
while c is not None:
if val cdata:
return True
if val cdata:
c cleft
else:
c cright
return False
def minTself:
if self.isEmpty:
printEmpty # or raise exception
return
c self.root
while cleft is not None:
c cleft
return cdata
def removeself val:
prev None
k self.root
while k is not None:
if kdata val:
break
elif kdata val:
prev k
k kleft
else:
prev k
k kright
if k is None:
return False
if kleft is None or kright is None:
self.delSinglek prev
else:
self.delDoublek
return True
def delSingleself ptr prev:
if ptr is self.root:
if self.root.left is None:
self.root self.root.right
else:
self.root self.root.left
elif ptr is prev.left:
if ptrleft is None:
prev.left ptrright
else:
prev.left ptrleft
else:
if ptrleft is None:
prev.right ptrright
else:
prev.right ptrleft
def delDoubleself c: # predecessor
prev c
rep cleft
while rep.right is not None:
prev rep
rep rep.right
cdata rep.data
self.delSinglerep prev
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
