0
我想实现一个简单的“插入”的方法来我的树类:AttributeError:'int'对象没有属性'insert';定义和调用递归方法
class Tree:
def __init__(self, value):
self.node = value
self.leftChild = None
self.rightChild = None
def insert(self, value):
if self.node is None:
self.node = value
return True
if self.node is not value:
if self.node > value:
if self.leftChild is None:
self.leftChild = value
else:
return self.leftChild.insert(value)
if self.node < value:
if self.rightChild is None:
self.rightChild = value
else:
return self.rightChild.insert(value)
else:
return False
tree = Tree(5)
tree.insert(6)
tree.insert(1)
tree.insert(10)
上面的代码提供了以下错误:
AttributeError: 'int' object has no attribute 'insert'
错误出现在当通过tree.insert(10)调用插入方法时,'return self.rightChild.insert(value)'这一行。
我试图通过“回插入(self.leftChild,值)”替换错误路线,但是这给了我以下错误:
NameError: global name 'insert' is not defined
我不知道如何解决这个问题!
谢谢!我的道歉,如果我的问题是非常基本的,但为什么我们不使用同时分配值的根节点?我们只是使用 –
Batool
每棵树需要知道三件事情:它的左边的孩子(它是一棵树),它的右边的孩子(它是一棵树)和它的值(它只是一个数字) 。这些是三个变量对应的。如果tree.node是一棵树,那么这棵树就会有一个节点,它是一棵树,并且该树会有一棵树,并且我们有无限下降,并且实际上不会将值存储在任何地方。如果您将self.node重命名为self.value以提醒您自己它是一个数字,可能会更清楚。 – perigon
把它看作一个树形图:self.node是小圆圈中的数字,self.leftChild和self.rightChild是左右的箭头。 – perigon