Einfügen mit Rebalance
Einfügen folgt dem Suchpfad wie im BST, hängt den Knoten als Blatt ein und steigt zurück. An jedem Vorfahren prüft man den Balancefaktor und rotiert bei Bedarf.
Aufgabe: berechne die Höhe eines Knotens aus den Kindhöhen.
Wo gebraucht
Online-Indizes: jede Mutation muss die Invariante reparieren. Gleiches Denkmuster in anderen selbstorganisierenden Strukturen.
Vertiefung
Zunächst wird nach der normalen Suchbaumregel ein Blatt eingefügt. Danach läuft die Reparatur den Suchpfad rückwärts, aktualisiert Höhen und prüft die lokale Balancebedingung.
Der Fall ergibt sich aus der Richtung zum schweren Kind und der Richtung innerhalb dieses Kindes. Stimmen beide Richtungen überein, genügt eine Rotation; andernfalls wird eine Doppelrotation ausgeführt.
Nach der Rotation muss der reparierte Teilbaum wieder korrekt in seinen Elternkontext eingesetzt werden. Bei rekursiven Implementierungen ist es deshalb hilfreich, aus jeder Methode die möglicherweise neue Teilbaumwurzel zurückzugeben.
Schwierigkeitsstufen
- Suchpfad und neue Blattposition bestimmen.
- Rotationsfall aus zwei Richtungsentscheidungen ableiten.
- Eine rekursive Methode mit Rückgabe der Teilbaumwurzel entwerfen.
Fallstricke
Wer Höhen vor der strukturellen Änderung berechnet, verwendet veraltete Werte. Gleichheitsschlüssel brauchen zudem eine feste Regel, sonst kann die Suchinvariante uneindeutig werden.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Intermediate
- Completed: 0 users