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
と同じと考えself.root.Leftchild
はありませんか? 私の考えが間違っている場合、どうすれば再帰的挿入機能を実装できますか? ありがとうございます!
いいえ、自己とはみなされません。インスタンス上でそのメソッドを呼び出す場合は、次のようにする必要があります。 'self.root.Rightchild.insert(val)'。 – jonrsharpe
または、挿入物に3つの引数を取って、(self、obj、val)のようにして、それに応じてロジックを変更してください。 –