Rot-Schwarz-B-Bäume Flashcards
Was sind die fünf eigenschaften eines Rot-Schwarz-Baum?
- Jeder Knoten ist entweder rot oder schwarz.
- Die Wurzel ist immer schwarz.
- Alle Blätter (NULL-Knoten) sind schwarz.
- Wenn ein Knoten rot ist, dann sind seine Kinderknoten immer schwarz.
- Jeder Pfad von einem Knoten zu einem seiner Blattknoten enthält die gleiche Anzahl schwarzer Knoten. Dies wird als schwarze Höhe des Baumes bezeichnet.
Welche Höhe hat ein RB-Baum und welche Schwaz-Höhe hat er?
- Ein RB-Baum garantiert die höhe O(lg (n) + 1)
- Die Schwarzhöhe ist >= h/2
Wie ist die Laufzeit der Operationen Search, Min, Max, Successor und Predecessor?
Dadurch, dass ein Rot-Schwarz Baum immer balanciert ist befinden sich die Operationen immer in O(lg(n))
Warum können Knoten im RB-Baum nicht so einfach Hinzugefügt und gelöscht werden?
- Beim einfügen und löschen passiert es sehr schnell, dass die Eigenschaften des RB-Baums verletzt werden.
- Daher muss man nach dem einfügen zwangsläufig den Baum danach “fixen”, was durch umfärben und rotieren passiert
Wie funktioniert das linke rotieren in einem RB-Baum?
- Wir wollen um x nach links rotieren
- Das rechte Kind von x nennen wir y
- x wird das linke Kind von y
- Das vorherige linke Kind von y wird das rechte Kind von x
- Laufzeit O(1)
Wie funktioniert das rechte rotieren in einem RB-Baum?
- Wir wollen um x nach rechts rotieren
- Das linke Kind von x nennen wir y
- x wird das rechte Kind von y
- Das vorherige rechte kind von y wird das linke Kind von X
Welche Fälle gibt es bein Einfügen in einen RB-Baum?
- Der Baum ist leer
- Elternknoten von z ist linkes Kind des Großeltern Knoten und Onkel Knoten Rot
-Es ist egal ob Z linkes oder rechtes Kind ist - Elternknoten von z ist linkes Kind des Großeltern Knoten und Onkel Knoten Schwarz
-Wenn Z linkes Kind ist, muss man in den 3. Fall überführen - Elternknoten von Z ist rechtes Kind des Großelternknoten und Onkel Knoten Rot
-Es ist egal ob Z linkes oder rechtes Kind ist - Elternknoten von Z ist echtes Kind des Großelternknoten und Onkel Knoten Schwarz
-Ist z das rechte Kind, muss man in den 5. Fall überführen
* Sonderfall: Wenn Eltern von Z schwarz muss nichts gemacht werden
Wie fügt man ein, wenn der Baum leer ist
- Z ist die Wurzel
- Z wird umgefärbt
Elternknoten von z ist linkes Kind des Großeltern Knoten und Onkel Knoten Rot, wie wird eingefügt?
- färbe Eltern und onkel schwarz
- färbe großvater rot
- g wird zum neuen z
Elternknoten von z ist linkes Kind des Großeltern Knoten und Onkel Knoten Schwarz, wie wird eingefügt?
- Falls z rechtes Kind
-z wird zum Elternknoten von z
-Linksrotation um z - Färbe großvater und Eltern um
- rotiere um g
* Schritt 2 und 3 können vertauscht werden
Elternknoten von Z ist rechtes Kind des Großelternknoten und Onkel Knoten Rot, wie wird eingefügt?
- Färbe Eltern un Onkel schwarz
- Färbe großvater rot
- g wird zum neuen z
Elternknoten von Z ist echtes Kind des Großelternknoten und Onkel Knoten Schwarz
- Falls z linkes Kind
-z wird zum Elternknoten von z
-Rechtsrotation von z - Färbe großvater und Eltern um
- rotiere um Großvater
* Schritt 2 und 3 können getauscht werden
Weshalb benutzt man B-Bäume und wo benutzt man sie?
- B-Bäume reduzieren die I/O Operationen auf Platten
- Werden daher für große Mengen von Daten genutzt, wie auf Festplatten oder Datenbanken
- Oftmals ist die höhe geringer als bei RB-Bäumen
- Die Anzahl der Kinder wird Verzweigungsgrad genannt
- Passt meistens nicht in den Hauptspeicher
- Die Wurzel ist immer im Hauptspeicher
Welche Eigenschaften müssen B-Bäume erfüllen?
- Jeder Knoten hat n Schlüssel
- Jeder Knoten hat n+1 Zeiger auf seine Kinder
- Die Elemente innerhalb der Knoten sind sortiert
- Alle Blätter sind auf der selben Höhe
- Obere und untere Schranke bzgl. der Anzahl der Schlüssel, die ein Knoten enthalten kann bestimmt eine feste Zahl t - der Grad des Baumes t >= 2
- Jeder Knoten (außer der Wurzel) hat mindestens t - 1 Schlüssel und mindestens t Kinder
- Jeder Knoten (außer der Wurzel) hat möchstens 2t - 1 Schlüssel und mindestens 2t Kinder
- Höhe ist <= logt((n+1)/2) und somit O(log n)
Wie sucht man in einem B-Baum?
- Man erstellt eine Zählvariable i
- Man iteriert durch den Knoten bis man am Ende ist oder bis das Element kleiner ist als der aktuelle Schlüssel
- Währenddessen macht man bei jedem Durchgang Unterscheidungen
3.1 Wenn das Element gefunden wurde gib es zurück
3.1.1 Wenn es nicht gefunden wurde aber ein Blatt ist geb NIL zurück
3.1.2 Wenn es nicht gefunden wurde und kein Blatt ist rufe rekursiv auf mit dem i-ten Zeiger