Spreizbaum mit ungerader Anzahl von Umdrehungen

9

Beim Einfügen eines Elements in einen Spreizbaum werden Drehungen paarweise basierend auf einem Zick-Zack- oder Zick-Zick-Muster ausgeführt. Wenn eine ungerade Anzahl von Umdrehungen ausgeführt werden muss, kann man entweder die zusätzliche Umdrehung beginnend am Blatt ausführen oder die zusätzliche Umdrehung speichern und an der Wurzel ausführen. Ist das wichtig?

Zum Beispiel füge ich im angehängten Bild eine 4 in eine BST ein und "spreize sie" zur Wurzel. Oben in der Abbildung finde ich zuerst das Zick-Zick-Paar am Blattknoten und führe die Zick-Zack-Spreizung von unten durch, wobei eine endgültige Rechtsdrehung an der Wurzel verbleibt. Am unteren Rand der Abbildung mache ich zuerst die ungerade Drehung ausgehend vom Blatt und dann eine Zick-Zick-Spreizung zur Wurzel.

Welches ist richtig? Oder führen beide zur üblichen Spreizbaumleistung?

Zwei Möglichkeiten zum Spreizen für eine ungerade Anzahl von Umdrehungen

wcochran
quelle

Antworten:

4

1+3(r(t)- -r(x))tr(u): =Log(Gewicht von uTeilbaum)Φ(T.)=x Knoten von T.r(t)

Der Beweis für das Zugriffs-Lemma bezieht sich auf die Kosten einer einzelnen Zick / Zick-Zack / Zick-Zick-Operation usw. Du erhältst

  1. 1+3(r+(u)- -r(u))r+u

  2. 3(r+(u)- -r(u))

1+3(r(t)- -r(x))

Wenn Sie die Reihenfolge der Umdrehungen ändern, erhalten Sie die gleiche Summe. Der einzige Unterschied besteht darin, dass jetzt '' +1 '' aus der ersten Umdrehung und nicht aus der letzten Umdrehung stammt. Sie könnten sogar die Zick-Rotation in der Mitte machen. Alle weiteren (klassischen) Analysen beruhen auf dem Zugangs-Lemma.

Der Grund, warum Sie die einzelne Drehung zuletzt ausführen, ist, dass Sie im Voraus nicht wissen, ob die Tiefe des Knotens gerade oder ungerade ist.

A.Schulz
quelle