Treap
In der Informatik ist ein Treap (gebildet aus binary search Tree, Binärer Suchbaum + Heap, wörtlich Haufen, Halde) ein binärer Suchbaum. Jeder Knoten x besteht aus zwei Elementen:
- x.key (Element)
- x.priority (Priorität)
Treaps wurden im Jahr 1989 von Cecilia R. Aragon und Raimund G. Seidel (Universität des Saarlandes) erfunden. Eine alternative Bezeichnung ist Balde (gebildet aus Baum und Halde).
Elemente
Sie erfüllen die Eigenschaften des binären Suchbaums (Binary search Tree). Das bedeutet:
- Die Elemente y im linken Teilbaum von x erfüllen: key(y) < key(x)
- Die Elemente y im rechten Teilbaum von x erfüllen: key(y) > key(x)
Prioritäten
Prioritäten erfüllen die Eigenschaften des Heaps. Das bedeutet:
- Alle Prioritäten sind verschieden (Zufallszahlen)
- Die Wurzel hat die kleinste Priorität (oberstes Element)
- Wenn y ein Kind von x ist, dann gilt: prio(y) > prio(x)
Suche nach einem Element
Die Suche erfolgt wie in einem binären Suchbaum. Der zu suchende Wert k wird mit dem Wert der Wurzel verglichen. Ist k größer, vergleicht man den Wert mit dem nächsten Knoten im rechten Teilbaum, wenn kleiner, dann im linken. Zu erwartende Laufzeit:
Einfügen eines Elementes
Um ein Element e in einen Treap einzufügen, erstellt man einen neuen Knoten x, speichert das Element e in x.key und wählt eine zufällige Priorität für x.priority. Nun fügt man den Knoten mittels x.key gemäß den Eigenschaften des Binären Suchbaums in den Treap ein. Da durch den neuen Knoten nun die Heap-Eigenschaft verletzt sein könnte, rotiert man den Knoten nun solange hinauf, bis die Heap-Bedingung wieder erfüllt ist.
Zu erwartende Laufzeit: . Die zu erwartende Tiefe ist logarithmisch. Die Anzahl der zu erwartenden Rotationen ist 2.
Entfernen eines Elementes
- Man sucht die Position des zu entfernenden Knotens x im Baum
- Man wechselt die Priorität auf +∞ (unendlich)
- Man rotiert den zu entfernenden Knoten zu der Seite hin, wo die größere Priorität ist, bis die Heap-Bedingung erfüllt ist, also insbesondere, bis das zu löschende Element ein Blatt ist.
- Das Element ist jetzt ein Blatt und kann gelöscht werden
Zu erwartende Laufzeit: . Die zu erwartende Tiefe ist logarithmisch. Die Anzahl zu erwartender Rotationen ist 2.
Kleinstes / größtes Element finden
Da die Elemente in einem Treap in der Ordnung eines normalen Binären Suchbaums gespeichert sind, ist das kleinste Element ganz links unten, und das größte Element ganz rechts unten zu finden. Somit muss man, um das kleinste Element zu finden, immer in den linken Teilbaum absteigen, und um das größte Element zu finden immer in den rechten Teilbaum absteigen.
Zu erwartende Laufzeit: , da die zu erwartende Tiefe logarithmisch ist.
Alle Elemente auflisten
- Gibt alle Elemente in aufsteigender Reihenfolge aus
- Wird durch den in-order Durchlauf durchgeführt (zwischen den zwei Teilbäumen)
Laufzeit ist .
Literatur
- Thomas H Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Algorithmen – eine Einführung. Oldenbourg, München / Wien 2004, ISBN 3-486-27515-1 (englisch: Introduction to algorithms. Übersetzt von Karen Lippert, Micaela Krieger-Hauwede).
Weblinks
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.