Das mag sehr naiv sein, aber ich habe mich gefragt, ob es sich um den Kontext von binären Bäumen (einfach, sortiert und ausgeglichen) aller Traversaltypen handelt:
- Tiefen-Vorbestellung
- Tiefe zuerst in der Reihenfolge
- Tiefe zuerst nachbestellen
- Breite zuerst
Was ist der eigentliche Nutzen von Vor- und Nachbestellungen? Ich meine, gibt es einen Typ und / oder eine Konfiguration eines Binärbaums, bei dem das Durchlaufen vor und / oder nach der Bestellung einen Vorteil gegenüber den beiden anderen bietet?
AFAICS, es gibt bestimmte Typen und Konfigurationen von Binärbäumen, für die In-order und Width-First einen bestimmten Vorteil bieten könnten:
Für einen ausgeglichenen Binärbaum wird bei jedem Durchlaufen der Tiefe zuerst weniger Speicherplatz benötigt als bei einem Durchlaufen der Breite zuerst 2 Knoten zu einem bestimmten Zeitpunkt, während die letzte Ebene 3 oder 4 Knoten hat, so dass der erste Durchlauf zu einem bestimmten Zeitpunkt bis zu 3 oder 4 Knoten speichern müsste. In diesem Fall wird bei der Verwendung von In-Order-Traversal am wenigsten Speicherplatz benötigt und die Knoten werden in ihrer natürlichen Reihenfolge besucht.
Für einen nicht ausgeglichenen Binärbaum würde, wenn er sich dem Einfügeszenario des schlechtesten Falls nähert, ein Durchlaufen mit der Breite zuerst weniger Speicherplatz verbrauchen als bei allen Durchläufen mit der Tiefe zuerst. In diesem Fall bietet die Breite zuerst einen Vorteil. In-Order-Traversal hat wiederum den Vorteil, Werte in ihrer natürlichen Reihenfolge zu besuchen.
Ich kann mir jedoch keine Situation vorstellen, in der Vor- und Nachhinein einen Vorteil gegenüber den beiden anderen bieten würden.
A + B * C
, was für normale Benutzer viel einfacher zu verstehen ist als jedes Präfix der Postfix-Reihenfolge.