我在python中實現了BST,並且在插入函數時遇到了一些麻煩。Python中的BST插入函數
class Node:
def __init__(self, val):
self.data = val
self.Leftchild = self.Rightchild = None
class Tree:
def __init__(self):
self.root = None
def insert(self, val):
if self.root is None:
self.root = Node(val)
return self.root
else:
if self.root.data <= val:
self.root.Rightchild = self.insert(self.root.Rightchild, val)
else:
self.root.Leftchild = self.insert(self.root.Leftchild, val)
return self.root
if __name__ == '__main__':
tree = Tree()
for i in range(10):
tree.insert(random.randint(0,100))
我得到了遞歸的TypeError。
TypeError: insert() takes 2 positional arguments but 3 were given
是不是self.root.Rightchild
或self.root.Leftchild
認爲同self
? 如果我的想法錯了,在這種情況下如何實現遞歸插入功能? 在此先感謝!
不,他們不像自己一樣。如果您想在實例上調用該方法,則需要'self.root.Rightchild.insert(VAL)'。 – jonrsharpe
或讓插入需要3個參數...類似於(self,obj,val)並相應地更改邏輯 –