Что заставит метод вставки в этом коде BST работать? - PullRequest
1 голос
/ 20 апреля 2020

класс работает хорошо, за исключением метода вставки. Все методы оператора печати работают. Я хочу вставить узел в дерево, но когда я вызываю r.insertion (7,3), он не работает и говорит, что нет ключа для ключа. Как я могу исправить это двоичное дерево поиска?

class BinarySearchTree:
    def __init__(self,rootObj):
        self.key = rootObj
        self.leftChild = None
        self.rightChild = None

    def insertLeft(self,newNode):
        if self.leftChild == None:
            self.leftChild = BinarySearchTree(newNode)
        else:
            t = BinarySearchTree(newNode)
            t.leftChild = self.leftChild
            self.leftChild = t

    def insertRight(self,newNode):
        if self.rightChild == None:
            self.rightChild = BinarySearchTree(newNode)
        else:
            t = BinarySearchTree(newNode)
            t.rightChild = self.rightChild
            self.rightChild = t

    def insertion(self,root, num):

        if root == None:
            return Node(num)
        #check if less than

        if num < root.key:
            root.left = insertion(self, root.left, num)

        elif num >= root.key:
            root.right = insertion(self, root.right, num)

        return root


    def getRightChild(self):
        return self.rightChild

    def getLeftChild(self):
        return self.leftChild

    def setRootVal(self,obj):
        self.key = obj

    def getRootVal(self):
        return self.key


r = BinarySearchTree(7)
print(r.getRootVal())
print(r.getLeftChild())
r.insertLeft(4)
print(r.getLeftChild())
print(r.getLeftChild().getRootVal())
r.insertRight(9)
print(r.getRightChild())
print(r.getRightChild().getRootVal())
r.getRightChild().setRootVal('hello')
print(r.getRightChild().getRootVal())
print(r.insertion(7,3))




Спасибо.

...