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