Ja, der Algorithmus braucht den parent Pointer. Ja, nach dem dritten Besuch ist die Traversierung fuer den Knoten und den Unterbaum darunter abgeschlossen. Die "herkoemmlichen" Algorithmen verfolgen nach dem ersten Besuch den Left-Zeiger, nach dem zweiten den Right-Zeiger und gehen nach dem dritten Besuch zurueck zum Parent-Knoten (meist mit Stack; hier ginge aber eben auch Verfolgen des Parent-Zeigers). Wirbeltraversierung rotiert die drei Zeiger nach jedem Besuch um 120 Grad gegen den Uhrzeigersinn (vgl. Bilder) und verfolgt dann stets den Parent-Zeiger. Im C-Programm werden die Zeiger nicht wirklich im Array ptr umkopiert; stattdessen wird die Rotation ueber cnt realisiert. Bei einem Blatt wird zweimal nxt==NULL festgestellt, so dass cur zweimal unveraendert bleibt. Dadurch wird es dreimal besucht, je einmal mit cnt=0,1,2. Danach wird der parent-Zeiger verfolgt (der natuerlich nicht NULL ist). visit wird uebrigens fuer jeden Knoten dreimal aufgerufen, je einmal mit cnt=0,1,2, entsprechend der pre-/in-/post-order-Operation. Den Hauptartikel koennen wir gerne weiter wie bisher auf meiner Diskussionsseite besprechen; ich wollte dort den Fluss nicht mit Wirbeltraversierung unterbrechen. Deinen Algorithmus verstehe ich nicht ganz. Anscheinend merkst Du Dir beim Betreten eines Knotens, von wo Du gekommen bist, und bestimmst daraus, wohin Du als naechstes gehen musst. Aber wenn Du von unten kommst, weisst Du doch nicht, ob vom linken oder vom rechten Unterbaum, und muesstest also die Adresse des zuvor besuchten Knotens vergleichen mit ->L und ->R; das habe ich im Code aber nicht wiedergefunden. - Wenn Dein Algorithmus tatsaechlich funktioniert und wenn ich den Wirbelalgorithmus tatsaechlich aus dem Gedaechtnis richtig rekonstruiert habe, ist es kein Wunder, dass letzterer von der Bildflaeche verschwunden ist. - Jochen Burghardt 22:06, 11. Mär. 2020 (CET)