C-Programmierung

Balancierte Bäume

Traversierung des Gesamtbaums | | Baumrotation

Entspricht ein Baum von der Topologie her einer Liste, so nennt man einen solchen Baum degeneriert.
Dann ist der Suchaufwand nicht besser als bei einer Liste.

Einen degenerierten Baum erhält man zum Beispiel, wenn bereits sortierte Elemente eingefügt werden.
Die einfachste Gegenstrategie zur Verhinderung der Degeneration ist das Einfügen der Elemente in einer zufälligen Reihenfolge.

Ist andererseits eine bestimmte Reihenfolge vorgegeben, so wendet man die Gegenstrategie der Balancierung an:

Dies bedeutet, dass zusätzliche Eigenschaften des binären Baums gefordert werden, welche die Degeneration verhindern. Falls nach dem Einfügen eines Elements diese Eigenschaften verletzt wurden, so wird der entstandene Baum topologisch umstrukturiert, so dass die geforderten Eigenschaften wieder erfüllt sind.

Balancierungsmethoden:

Methodegeforderte Eigenschaftmaximale Baumtiefe
AVL Bäumedie Tiefe des linken und rechten Teilbaums differiert nicht mehr als 1$1.44log_2n$
Red/Black TreesAbwechselnd Rot und Schwarz gefärbte Knoten$2log_2n$
Random BS TreesElement mit Wahrscheinlichkeit $p=\frac1{k+1}$ zur Wurzel machen$\approx 4 log_2n$

Weiterführende Literatur:

Weitere von Bäumen abgeleitete oder verwandte Datenstrukturen:

Sonstige Datenstrukturen:

usw.

Traversierung des Gesamtbaums | | Baumrotation

Options: