0

Ich sehe, wie es in den Baum geht, aber nicht sehen, wie es zurück und auf die rechte Seite der Wurzel überquert. Kann jemand das erklären? Dies ist in Python vollständig funktionsfähig.In einem Inorder-Traversal eines binären Suchbaums, wo im Code durchläuft es?

def inorder(self): 
    if self: 
     if self.leftChild: 
      self.leftChild.inorder() 
     print(str(self.value)) 
     if self.rightChild: 
      self.rightChild.inorder() 

Wo in diesem Code speziell geht es zurück in den Baum?

+3

Verfolgen Sie einige Iterationen manuell. Sie werden feststellen, dass eine * Rückkehr vom Aufruf der Funktion * eine Ebene zurückspringt - dorthin, wo sie aufgerufen wurde. Das ist das Up, nach dem du suchst. – usr2564301

+0

[Python Tutor] (http://www.pythontorer.com/) kann Ihnen helfen. Es visualisiert Schritt für Schritt, wie der Computer das Programm ausführt. – Jomy

+0

Mögliches Duplikat von [Understanding recursion] (http://stackoverflow.com/questions/717725/understanding-recursion) –

Antwort

1

Das Ende einer Funktion zu erreichen, ist dasselbe wie die Ausführung von return, was dasselbe ist wie die Ausführung von return None.

Für Funktionen, die keinen aussagekräftigen Wert zurückgeben, wird bevorzugt, dass die Ausführung das Ende der Funktion erreicht, anstatt einen überflüssigen return am Ende der Funktion zu platzieren.

+0

OK, also angenommen, dass es das Ende der Funktion erreicht und None zurückgibt, wie/wo führt es die Funktion erneut aus, wenn es nicht im Code aufgerufen wird? –

+0

@Joel: Es muss die Funktion nicht erneut ausführen; Es lief * bereits *. – Hurkyl

+0

Kannst du mir mitteilen, in welcher Zeile des obigen Codes es sich befindet? Danke –