Definition:
Ein Splay Tree ist ein interner binärer Suchbaum mit Move-To-Root-Heuristik.
Definition:
Die Move-To-Root-Heuristik (MTR) bewirkt bei jedem Zugriff ''Splay'' auf ein Element,
dass es anhand von Rotationen (zig, zig-zig, zig-zag) zur Wurzel befördert wird.
Rotationen: ( soll an die Wurzel, sei Vater und Großvater)
Fall 1 ''zig'': ist Wurzel
Fall 2 ''zig-zig'': und sind beides rechte oder beides linke Söhne
Fall 3 ''zig-zag'': von und ist je einer linker und einer rechter Sohn
Operationen:
1. : von der Wurzel den Baum bis zum Element mit Schlüssel traversieren (bzw. zum nächstkleineren Element), dann das Element an die Wurzel rotieren
2. : Splay und Element ausgeben (falls ein Element mit Schlüssel existiert)
3. : Splay und in zwei Teilbäume mit Schlüssel und zerlegen, dazu an der Wurzel den rechten Teilbaum abspalten
4. : Split bei und Teilbäume an Wurzel hängen. Vorsicht: der Splay Tree entartet beim Einfügen vorsortierter Elemente
5. : größtes Element in mit Splay an die Wurzel und einhängen
6. : mit Splay an die Wurzel und entfernen, dann Join der beiden Teilbäume
Definitionen:
- ist Anzahl der Knoten im Teilbaum mit Wurzel
-
ist Potential von
-
ist Potential des Baumes
Analyse:
- Amortisierte Laufzeit einer Splay-Operation ist
in den Fällen 1 und 2
im Fall 3
- Jeweils beliebige Operationen haben Worst Case Laufzeit