Kann mir jemand das Double Order Traversal erklären?
A
/ \
B E
/ \ / \
C D F G
Traversal-Ausgang doppelter Ordnung : ABCCBDDAEFFEGG
Ich bin eher an Erklärungen als an dem Code interessiert.
Danke
Kann mir jemand das Double Order Traversal erklären?
A
/ \
B E
/ \ / \
C D F G
Traversal-Ausgang doppelter Ordnung : ABCCBDDAEFFEGG
Ich bin eher an Erklärungen als an dem Code interessiert.
Danke
Angenommen, Sie sind an einer Erklärung interessiert, was ein Traversal doppelter Ordnung bewirkt:
Für jede Traversierung müssen Sie
Mehr gibt es nicht zu sagen. In Fällen, in denen Sie kein linkes Kind haben (wie z. B. C), finden die beiden "visit node"-Operationen nacheinander statt, weshalb Sie in Ihrer Ausgabe zwei Cs sehen.
Nur zur Veranschaulichung (mit fettgedruckter Ausgabe):
usw.
Stellen Sie sich vor, Sie gehen, beginnend an der Wurzel.
usw.
Dies ist nur eine Durchquerung, die sowohl Ein- als auch Ausgänge zählt.
Zwischen dem Besuch der linken und rechten Kinder in einem Preorder-Traversal besucht man die Wurzel (weil man zu ihr zurückkehren muss, um weiterzugehen), und man kann sich die Blätter als Wurzeln vorstellen, die keine Kinder haben, und null
wird Sie dazu bringen, sofort wiederzukommen (daher die zwei aufeinander folgenden Besuche in den Blättern, und die Knotenpunkte haben nur richtige Kinder).
Rekursion durch:
1. Visit root of (sub)tree.
2. Visit left subtree.
3. Revisit root of (sub)tree.
4. Visit right subtree.
Aus dem Stegreif fällt mir keine Anwendung dafür ein, obwohl ich einige wirklich verrückte Dinge mit einem Stapel von Knoten gemacht habe, die sich in mehreren Bäumen (und verknüpften Listen) gleichzeitig befinden.
Im Wesentlichen handelt es sich um einen rekursiven Ansatz zur Durchquerung eines Baumes (hier handelt es sich um einen Binärbaum)
Hier ist ein Algorithmus für Double Order Traversal :
Algorithmus DoubleOrder(Wurzel)
if(Wurzel ist nicht NULL)
endif
Ende DoubleOrder
Erläuterung:
Endgültige Ausgabe : ABCCBDDAEFFEGG
Ich hoffe, es hilft Ihnen, das Gesamtkonzept zu verstehen! Ich freue mich sehr, zum ersten Mal auf Stack Overflow zu antworten :)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.