Ich versuche, binäre Suchbaum in Python mit Rekursion zu implementieren. Ich bin in einigen unendlichen Rekursionen gefangen, die in meinem Programm geschehen. Ich mache rekursive Aufrufe an die Funktion RecursBST, indem ich die Adresse und die Daten übergebe, bis die obere Grenze auf None-Wert des linken oder rechten Kindes abfällt.Binary Search Baum rekursive Implementierung in Python
class createnode:
def __init__(self,data):
self.root=data
self.left=None
self.right=None
class createbinarysearchtree:
def __init__(self, data = None):
self.top=None
def RecursBST(self,top,data):
if self.top is None:
self.top=createnode(data)
elif self.top.root>data:
self.top.left=self.RecursBST(self.top.left,data)
elif self.top.root<data:
self.top.right=self.RecursBST(self.top.right,data)
conv=createbinarysearchtree();
conv.RecursBST(conv.top,50)
conv.RecursBST(conv.top,40)
Ich lief zum unten Fehler:
self.top.left=self.RecursBST(self.top.left,data)
RuntimeError: maximum recursion depth exceeded
Dein Code nie explizit festlegen, was "links" und "rechts" sind. Was passiert, wenn Sie 'RecursBST' und' data == self.top.root' aufrufen? – tyteen4a03
'RecurseBST' gibt nichts zurück, daher sind die Zuweisungen zu' self.top.left' und 'self.top.right' nicht sinnvoll. – nucleon
@nucleon auch wenn ich eine return-Anweisung als return self.top in den if-Teil gebe ich immer noch den gleichen Fehler. – codaholic