Skip to content

🌳 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:

avl-tree-balancing.svg

🔗 Studyfix - Studyfix

1️⃣ LL-Rotation (Links-Links-Fall):

  • Ungleichgewicht: Neuer Knoten wurde im linken Teilbaum des linken Kindes eingefĂźgt.
  • LĂśsung: Rechtsrotation (Right Rotation)
    3
   /
  2
 /
1

➡️ Nach Rechtsrotation:

    2
   / \
  1   3

2️⃣ RR-Rotation (Rechts-Rechts-Fall):

  • Ungleichgewicht: Neuer Knoten wurde im rechten Teilbaum des rechten Kindes eingefĂźgt.
  • LĂśsung: Linksrotation (Left Rotation)
  1
   \
    2
     \
      3

➡️ Nach Linksrotation:

    2
   / \
  1   3

3️⃣ LR-Rotation (Links-Rechts-Fall):

  • Ungleichgewicht: Neuer Knoten wurde im rechten Teilbaum des linken Kindes eingefĂźgt.
  • LĂśsung: Zweifache Rotation:
    1. Linksrotation am linken Kind
    2. Rechtsrotation am unbalancierten Knoten
    3
   /
  1
   \
    2

➡️ Nach Doppelrotation:

    2
   / \
  1   3

4️⃣ RL-Rotation (Rechts-Links-Fall):

  • Ungleichgewicht: Neuer Knoten wurde im linken Teilbaum des rechten Kindes eingefĂźgt.
  • LĂśsung: Zweifache Rotation:
    1. Rechtsrotation am rechten Kind
    2. Linksrotation am unbalancierten Knoten
  1
   \
    3
   /
  2

➡️ Nach Doppelrotation:

    2
   / \
  1   3

🚀 5️⃣ AVL-Baum Einfügen (Insert)

  1. Normal einfĂźgen (wie in einem BST).
  2. Balance-Faktoren berechnen.
  3. 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:

10
2️⃣ Füge 20 ein:
  10
    \
     20
- Balance-Faktor von 10: -1 (ok)

3️⃣ Füge 30 ein:

  10
    \
     20
       \
        30

  • Balance-Faktor von 10: -2 (ungleichgewichtig) → RR-Fall
  • ✅ LĂśsung: Linksrotation bei 10. ➡️ Nach Rotation:
        20
       /  \
      10   30
    

🚀 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

  1. Jeder Knoten ist entweder rot oder schwarz.
  2. Die Wurzel ist immer schwarz.
  3. Alle Blätter (NIL-Knoten) sind schwarz.
  4. Ein roter Knoten hat keine roten Kinder (keine zwei roten Knoten direkt hintereinander).
  5. 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:

  1. FĂźge den Knoten wie in einem normalen BST ein.
  2. Färbe den neuen Knoten immer ROT.
  3. Verletzen der Rot-Schwarz-Regeln?
    • Falls ja, werden Rotationen und Umfärbungen angewendet.
  4. 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

s_r_tree.svg

🔗 Studyfix - Studyfix


🚩 5️⃣ Delete (Löschen) in einem Rot-Schwarz-Baum

✅ Schritt-für-Schritt:

  1. LĂśsche den Knoten wie in einem BST.
  2. Falls ein schwarzer Knoten gelĂśscht wird:
    • "Doppelschwarz"-Problem kann auftreten (Ungleichgewicht).
  3. 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.

b-baum-ordnung3.svg

🔗 Studyfix - Studyfix

✅ 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).