我正在尝试实施一个简单的插入'我的Tree类的方法:
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:&#39; int&#39;对象没有属性&#39; insert&#39;
错误出现在&#39;返回self.rightChild.insert(value)&#39;当通过tree.insert(10)调用insert方法时。
我尝试用&#39;返回插入(self.leftChild,value)&#39;来替换错误的行,但这会给我以下错误:
NameError:全局名称&#39;插入&#39;未定义
我不知道如何解决这个问题!
答案 0 :(得分:2)
您要将左右子项设置为value
,这是一个整数。要实现递归结构,应将它们设置为新的Tree对象;这样你可以调用他们的Tree方法。这是一个简单的解决方法 - 只需使用Tree(value)
代替value
。
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 = Tree(value)
else:
return self.leftChild.insert(value)
if self.node < value:
if self.rightChild is None:
self.rightChild = Tree(value)
else:
return self.rightChild.insert(value)
else:
return False
tree = Tree(5)
tree.insert(6)
tree.insert(1)
tree.insert(10)