【发布时间】:2020-04-20 02:00:15
【问题描述】:
除了插入方法外,该类似乎运行良好。所有打印语句方法都有效。我想在树中插入一个节点,但是一旦我调用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))
谢谢。
【问题讨论】:
-
在
r.insertion(7,3)中,您将7作为整数值传递。整数值没有任何名为key的属性。但是在insertion方法中,您将第一个参数视为Node对象。所以,你需要在insertion方法中传递Node对象。
标签: python python-3.x algorithm binary-search-tree