Ich implementiere BST in Python und einige Probleme mit der Einfügefunktion.BST-Einfügefunktion in Python
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))
Ich habe TypeError auf rekursive.
TypeError: insert() takes 2 positional arguments but 3 were given
Ist das nicht self.root.Rightchild
oder self.root.Leftchild
gleiche gilt als self
? Wenn mein Gedanke falsch ist, wie kann ich rekursive Einfügefunktion in diesem Fall implementieren? Vielen Dank im Voraus!
Nein, sie gelten nicht als self. Wenn Sie diese Methode für die Instanz aufrufen möchten, benötigen Sie z. 'self.root.Rightchild.insert (val)'. – jonrsharpe
Oder lassen Sie die Einfügung 3 Argumente ... etwas wie (self, obj, val) und ändern Sie die Logik entsprechend –