Ich bin auf der Rekursion in binärer Suchbaum Transversalen verwirrt, ich bin gerade verloren, da ich eine Liste am Ende zurückkommen müssen und nicht bekommen, wie die values.It wie dies fügt Werte speichern denn ich glaube nicht, ich bin bewegt richtig hier durch den Baum ist, nicht sicher, ob mein Code unten gezeigt und ich habe nicht, welche Daten stype verwendet wird, um die Werte so speichern auch wenn mein Unittest korrekt ist entwederbinärer Suchbaum Transversalen
def inorder(self):
print("IN INORDER_______________________________")
print("Printing self.value" + str(self.__value))
result = []
if self.__left:
print("theres self.left")
print(self.__value)
#result = result + self.__left
#print(result)
return self.__left.inorder()
result
print(result + "RESULTS")
if self.__right:
print("theres self.right")
print(self.__value)
return self.__right.inorder()
return result
def test_inorder(self):
bt = family_tree()
bt.add(15, "jim")
bt.add(20, "jamie")
bt.add(25, "fred")
bt.add(35, "howard")
bt.add(30, "kc")
x = bt.inorder()
expected = '''(15, 'jim'),(20, 'jamie'),(25, 'fred'),(30, 'howard'),(35, 'kc')'''
self.assertEquals(str(x), expected)
t = family_tree(bt)
self.assertEquals(str(t), expected)
Ich denke, es einige Fehler in Ihrer 'inorder' Methode. Der Code, der sich nach der return-Anweisung befindet (z. B. in einer Verzweigung wie "if self .__ right"), wird nie ausgeführt. Wenn Sie die print-Anweisung ausschließen, könnte Ihre Funktion auf etwas wie "def inorder (self)" reduziert werden: wenn self .__ left: return self .__ left.inorder() elif self .__ rechts: return self .__ right.inorder() else: return [] '' 'keine genaue Antwort, aber Sie ein anderes Attribut verwenden können (wir say'self.result') des Objekts den Wert, den Sie auf jeder Rekursion speichern müssen hinzuzufügen, bis Sie fertig sind und Rückkehr es. – mgc