Why does this not return anything after running it? 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) tree = BST() # Insert some nodes node1 = BSTnode(5) node2 = BSTnode(3) node3 = BSTnode(7) tree.insertnode(node1) tree.insertnode(node2) tree.insertnode(node3) tree.getroot()

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

Why does this not return anything after running it?
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)

tree = BST()

# Insert some nodes
node1 = BSTnode(5)
node2 = BSTnode(3)
node3 = BSTnode(7)
tree.insertnode(node1)
tree.insertnode(node2)
tree.insertnode(node3)
tree.getroot()

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Binary Tree
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
  • SEE MORE 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