Can you make a test case for this to see if it works?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Can you make a test case for this to see if it works?
class BSTnode:
    def __init__(self, key=None, left=None, right=None, parent=None):
        # Initialize a node.
        self.__key = key  # value for the node
        self.__left = left
        self.__right = right
        self.__parent = parent

    def setkey(self, newkey):
        # Sets the key value of the node to newkey
        self.__key = newkey

    def getkey(self):
        # returns the key value of the node
        return self.__key

    def getright(self):
        # returns the right child of the node
        return self.__right

    def setright(self, newright):
        # Sets the right child to the new node object newright. Child nodes parent is also updated.
        self.__right = newright
        if newright is not None:
            newright.__parent = self

    def getleft(self):
        # returns the left child of the node.
        return self.__left

    def setleft(self, newleft):
        # Sets the left child to the new node object newleft. Child nodes parent is also updated.
        self.__left = newleft
        if newleft is not None:
            newleft.__parent = self

    def getparent(self):
        # returns the parent of the node
        return self.__parent

    def setparent(self, newparent, left=True):
        # Sets the parent to the new node object newparent.
        # Parents child pointer is also updated based on the value of the left.
        # If left = True then sets node as left child of parent, sets as right child otherwise.
        self.__parent = newparent
        if newparent is not None:
            if left:
                newparent.__left = self
            else:
                newparent.__right = self
class BST:
    def __init__(self, root=None):
        if root is not None:
            root.setparent(None)
        self.__root = root
    def getroot(self):
        # Returns the root node of the tree
        return self.__root
    def setroot(self, node):
        # Sets the root node of the tree
        self.__root = node
    def insertnode(self, node):
        # Inserts a node to the correct position in a BST. A success returns true and failure returns false.
        if self.__root is None:
            self.__root = node
            return True
        else:
            currentnode = self.__root
            while True:
                if node.getkey() == currentnode.getkey():
                    return False
                elif node.getkey() < currentnode.getkey():
                    if currentnode.getleftchild() is None:
                        currentnode.setleftchild(node)
                        node.setparent(currentnode)
                        return True
                    else:
                        currentnode = currentnode.getleftchild()
                else:
                    if currentnode.getrightchild() is None:
                        currentnode.setrightchild(node)
                        node.setparent(currentnode)
                        return True
                    else:
                        currentnode = currentnode.getrightchild()
    def searchnode(self, searchkey):
        # Search the BST for a node with searchkey. If found returns the first node with searchkey and failure returns false.
        currentnode = self.__root
        while currentnode is not None:
            if searchkey == currentnode.getkey():
                return currentnode
            elif searchkey < currentnode.getkey():
                currentnode = currentnode.getleftchild()
            else:
                currentnode = currentnode.getrightchild()
        return False
    def __removenode(self, node):
        # Removes a node from the BST. This method uses the __successornode and __replacechild method.
        if node.getleftchild() is None and node.getrightchild() is None:
            parentnode = node.getparent()
            if parentnode is None:
                self.__root = None
            else:
                if node == parentnode.getleftchild():
                    parentnode.setleftchild(None)
                else:
                    parentnode.setrightchild(None)
        elif node.getleftchild() is None:
            self.__replacechild(node.getparent(), node, node.getrightchild())
        elif node.getrightchild() is None:
            self.__replacechild(node.getparent(), node, node.getleftchild())
        else:
            successor = self.__successornode(node)
            if successor != node.getrightchild():
                self.__replacechild(successor.getparent(), successor, successor.getrightchild())
                successor.setrightchild(node.getrightchild())
                node.getrightchild().setparent(successor)

            

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 5 steps

Blurred answer
Knowledge Booster
Math class and its different methods
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education