đł Selbstbalancierende Bäume¶
đ AVL-Bäume â Selbstbalancierende Binärbäume¶
đ 1ď¸âŁ Was ist ein AVL-Baum?¶
Ein AVL-Baum ist ein selbstbalancierender binärer Suchbaum (BST).
Er wurde nach seinen Erfindern Adelson-Velsky und Landis benannt.
- â Eigenschaft: FĂźr jeden Knoten gilt: \(\(BF = HĂśhe (linker Teilbaum)âHĂśhe (rechter Teilbaum) â¤1\)\)
-
Das heiĂt: Die HĂśhe der linken und rechten Teilbäume darf sich um maximal 1 unterscheiden.
-
BF = +1: Linker Teilbaum ist um 1 hĂśher â leicht nach links geneigt.
- BF = 0: Beide Teilbäume sind gleich hoch â perfekt balanciert.
- BF = -1: Rechter Teilbaum ist um 1 hĂśher â leicht nach rechts geneigt.
FUNKTION insert(node, key):
WENN node leer:
GIB neuen Knoten mit key zurĂźck
WENN key < node.key:
node.left = insert(node.left, key)
ANDERNFALLS:
node.right = insert(node.right, key)
AKTUALISIERE HĂśhe von node
balance = Balance-Faktor(node)
// 4 Rotationsfälle
WENN balance > 1 UND key < node.left.key:
GIB rechts-rotation(node) // LL-Fall
WENN balance < -1 UND key > node.right.key:
GIB links-rotation(node) // RR-Fall
WENN balance > 1 UND key > node.left.key:
node.left = links-rotation(node.left) // LR-Fall
GIB rechts-rotation(node)
WENN balance < -1 UND key < node.right.key:
node.right = rechts-rotation(node.right) // RL-Fall
GIB links-rotation(node)
GIB node zurĂźck
⥠4ď¸âŁ AVL-Rotationen zur Balancierung¶
Wenn ein AVL-Baum aus dem Gleichgewicht gerät, wird er durch Rotationen korrigiert. Es gibt 4 Rotationstypen:
1ď¸âŁ LL-Rotation (Links-Links-Fall):
- Ungleichgewicht: Neuer Knoten wurde im linken Teilbaum des linken Kindes eingefĂźgt.
- LĂśsung: Rechtsrotation (Right Rotation)
âĄď¸ Nach Rechtsrotation:
2ď¸âŁ RR-Rotation (Rechts-Rechts-Fall):
- Ungleichgewicht: Neuer Knoten wurde im rechten Teilbaum des rechten Kindes eingefĂźgt.
- LĂśsung: Linksrotation (Left Rotation)
âĄď¸ Nach Linksrotation:
3ď¸âŁ LR-Rotation (Links-Rechts-Fall):
- Ungleichgewicht: Neuer Knoten wurde im rechten Teilbaum des linken Kindes eingefĂźgt.
- LĂśsung: Zweifache Rotation:
- Linksrotation am linken Kind
- Rechtsrotation am unbalancierten Knoten
âĄď¸ Nach Doppelrotation:
4ď¸âŁ RL-Rotation (Rechts-Links-Fall):
- Ungleichgewicht: Neuer Knoten wurde im linken Teilbaum des rechten Kindes eingefĂźgt.
- LĂśsung: Zweifache Rotation:
- Rechtsrotation am rechten Kind
- Linksrotation am unbalancierten Knoten
âĄď¸ Nach Doppelrotation:
đ 5ď¸âŁ AVL-Baum EinfĂźgen (Insert)¶
- Normal einfĂźgen (wie in einem BST).
- Balance-Faktoren berechnen.
- Rotation anwenden, falls der Baum aus dem Gleichgewicht ist.
â Beispiel: AVL-EinfĂźgeoperation¶
EinfĂźgen der Knoten in dieser Reihenfolge: 10 â 20 â 30
1ď¸âŁ FĂźge 10 ein:
2ď¸âŁ FĂźge 20 ein: - Balance-Faktor von 10: -1 (ok)3ď¸âŁ FĂźge 30 ein:
- Balance-Faktor von 10: -2 (ungleichgewichtig) â RR-Fall
- â LĂśsung: Linksrotation bei 10. âĄď¸ Nach Rotation:
đ 9ď¸âŁ Laufzeitanalyse¶
- Suchen, EinfĂźgen, LĂśschen: O(logâĄn)O(\log n)O(logn)
- Balancierung: O(logâĄn)O(\log n)O(logn) durch Rotationen
- Speicherkomplexität: O(n)O(n)O(n)
đŻ 1ď¸âŁ0ď¸âŁ Fazit¶
- â AVL-Bäume sind immer balanciert, daher sehr effizient fĂźr Suchoperationen.
- â Rotationen (LL, RR, LR, RL) halten den Baum ausgeglichen.
- â Laufzeit fĂźr alle Operationen: \(O(logâĄn)\)
- â Anwendungen: Datenbanken, Indexstrukturen, Speichermanagement.
đ Rot-Schwarz-Bäume â Selbstbalancierende Binärbäume¶
đ 1ď¸âŁ Was ist ein Rot-Schwarz-Baum?¶
Ein Rot-Schwarz-Baum ist ein selbstbalancierender binärer Suchbaum (BST), der sicherstellt, dass der Baum immer ungefähr balanciert bleibt.
Er ist eine Alternative zu AVL-Bäumen, verwendet jedoch eine andere Strategie zur Balancierung, die effizienter fßr häufige Einfßgungen und LÜschungen ist.
đ 2ď¸âŁ Eigenschaften von Rot-Schwarz-Bäumen¶
- Jeder Knoten ist entweder rot oder schwarz.
- Die Wurzel ist immer schwarz.
- Alle Blätter (NIL-Knoten) sind schwarz.
- Ein roter Knoten hat keine roten Kinder (keine zwei roten Knoten direkt hintereinander).
- Jeder Pfad von der Wurzel zu einem Blatt hat die gleiche Anzahl schwarzer Knoten (schwarze HĂśhe).
Diese Regeln sorgen dafĂźr, dass der Baum immer logarithmisch hoch bleibt, was schnelle Such-, EinfĂźge- und LĂśschoperationen ermĂśglicht.
đ 3ď¸âŁ Balance-Konzept: Schwarze HĂśhe¶
- Die schwarze HĂśhe eines Knotens ist die Anzahl der schwarzen Knoten auf dem Weg von diesem Knoten bis zu einem Blatt.
- Wichtige Regel: Alle Pfade von der Wurzel zu den Blättern mßssen die gleiche schwarze HÜhe haben.
đ 4ď¸âŁ Insert (EinfĂźgen) in einen Rot-Schwarz-Baum¶
â Schritt-fĂźr-Schritt:¶
- FĂźge den Knoten wie in einem normalen BST ein.
- Färbe den neuen Knoten immer ROT.
- Verletzen der Rot-Schwarz-Regeln?
- Falls ja, werden Rotationen und Umfärbungen angewendet.
- Stelle sicher, dass die Wurzel am Ende immer SCHWARZ ist.
INSERT(node, key):
FĂźge key normal wie im BST ein
Färbe den neuen Knoten ROT
WHILE (Elternknoten ROT):
IF (Elternknoten ist linkes Kind):
WENN Onkel ROT:
Färbe Eltern & Onkel SCHWARZ, GroĂeltern ROT
Setze GroĂeltern als neuen Knoten
ANDERNFALLS:
WENN der Knoten ein rechtes Kind ist:
Linksrotation am Elternknoten
Rechtsrotation am GroĂelternknoten
Farben von Eltern & GroĂeltern umkehren
(Symmetrischer Fall fĂźr rechtes Kind)
Wurzel immer SCHWARZ färben
đ Rotationen:¶
- Linksrotation (Left Rotation): Dreht eine Kante nach links.
- Rechtsrotation (Right Rotation): Dreht eine Kante nach rechts.
Diese Rotationstypen helfen dabei, die Balance des Baums wiederherzustellen.
đşď¸ Beispielgraph¶
đŠ 5ď¸âŁ Delete (LĂśschen) in einem Rot-Schwarz-Baum¶
â Schritt-fĂźr-Schritt:¶
- LĂśsche den Knoten wie in einem BST.
- Falls ein schwarzer Knoten gelĂśscht wird:
- "Doppelschwarz"-Problem kann auftreten (Ungleichgewicht).
- LĂśsen durch:
- Rotationen
- Umfärbungen
- Transfer schwarzer HĂśhe
đ B-Bäume â Selbstbalancierende Suchbäume fĂźr groĂe Datenmengen¶
đ 1ď¸âŁ Was ist ein B-Baum?¶
Ein B-Baum ist eine selbstbalancierende Baumstruktur, die speziell fĂźr den Einsatz in Datenbanken und Dateisystemen entwickelt wurde.
Er kann mehrere SchlĂźssel pro Knoten speichern und hat mehr als zwei Kinder â generalisierter AVL-Baum.
- â Eigenschaft: Effizient fĂźr groĂe Datenmengen, da er weniger tief ist (im Vergleich zu AVL/Red-Black-Bäumen).
- â Optimal fĂźr Festplatten & Speicherzugriffe, da groĂe BlĂścke auf einmal verarbeitet werden.
đ 2ď¸âŁ Eigenschaften eines B-Baums (Ordnung m)¶
Ein B-Baum der Ordnung m hat:
- Maximal \(mâ1\) SchlĂźssel pro Knoten
- Mindestens \(âm/2â - 1\) SchlĂźssel pro Knoten (auĂer der Wurzel)
- Maximal \(m\) Kinder pro Knoten
- Jeder interne Knoten mit \(k\) SchlĂźsseln hat genau \(k+1\) Kinder
- Alle Blätter sind auf derselben Ebene â Baum ist immer balanciert.
â 8ď¸âŁ Fazit¶
- B-Bäume sind optimal fĂźr groĂe Datenmengen.
- â Insert: EinfĂźgen + Split bei Ăberlauf.
- â Delete: LĂśschen + Merge/Redistribute bei Unterlauf.
- â Anwendungen: Datenbanken, Dateisysteme (z.B. NTFS, MySQL, PostgreSQL).