класс работает хорошо, за исключением метода вставки. Все методы оператора печати работают. Я хочу вставить узел в дерево, но когда я вызываю 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))
Спасибо.