next up previous contents
Next: Hashing Up: Binäre Suchbäume Previous: Natürliche binäre Suchbäume

Höhenbalancierte binäre Suchbäume (AVL-Bäume)

Definition: Ein AVL-Baum [*] ist ein spezieller binärer Suchbaum, der neben den Sortierungsbedingungen auch die folgende Höhenbalancierungen erfüllt. Für den Knoten v gilt:
| Höhe(lUBv) - Höhe(rUBv) | $\leq 1$
Lemma: Ein AVL-Baum der Höhe h hat mindestens nh= Fib(h+2) Blätter.

Beweis: Induktion nach h:
I)
$h=1; \Rightarrow n_h = 2 = $ Fib(3);
$h=2 \Rightarrow n_h = 3 = $ Fib(4);

\begin{picture}
(78,36)

\put(0,10){
\framebox 
(5,5){}}
\put(20,10){
\framebox ...
 ...7}}
\put(50,30){\line(-3,-4){7.5}}
\put(40,15){
\framebox 
(5,5){}}\end{picture}
II)
$h\geq 3; \Rightarrow n_h \geq n_{h-1} + n_{h-2}$
Bei einem bzgl. der Blätterzahl minimalen AVL-Baum der Höhe h darf nur einer der Unterbäume der Höhe h-1 haben. Der andere muß kürzer sein, aber wegen der Balancierungsbedingung mindestens Höhe h-2 haben. Beide sind natürlich minimale AVL-Bäume. Also gilt nh = nh-1+nh-2. Dies ist genau die Bestimmungsgleichung für Fib(h+1).


\begin{picture}
(40,38)
\put(5,10){\line(1,0){10}}
\put(15,10){\line(-1,2){5}}
\...
 ...
\put(3,4){\makebox(15,5){$h-1$}}
\put(24,8){\makebox(15,5){$h-2$}}\end{picture}

$\Diamond$
Folgerung: Operationen auf AVL-Bäumen:
1.
IsElement : Diese Operation wird wie bei den natürlichen Suchbäumen implementiert. Wie oben ausgeführt, haben aber AVL-Bäume mit n Datenelementen eine Höhe von $\mathcal{O}(\log{n})$, woraus logarithmische Zeit für das Suchen folgt.
2.
Insert : Zunächst wird eine IsElement -Operation ausgeführt, die für den Fall, daß das einzufügende Element nicht bereits enthalten ist, zu einem Blatt führt. Dies ist die Stelle, an der das neue Element einzufügen ist. Dabei ergeben sich 2 Fälle:

1. Fall:


\begin{picture}
(150,37)
\put(12.5,15){
\framebox 
(5,5){}}
\put(15,20){\line(1,...
 ...}}
\put(90,0){
\framebox 
(5,5){}}
\put(105,0){
\framebox 
(5,5){}}\end{picture}

(Balance $-1 \rightarrow 0 $: symmetrisch)

2. Fall:


\begin{picture}
(152,38)
\put(12.5,15){
\framebox 
(5,5){}}
\put(15,20){\line(1,...
 ...0,5){Balance $-1$}}
\put(60,20){\makebox(20,5){\Huge$\Rightarrow$}}\end{picture}

Hier ist eventuell eine Rebalancierung auf dem Pfad zur Wurzel notwendig, denn die Höhe eines Unterbaums ändert sich derart, daß die Balance nicht zu wird, sondern zu +1 oder -1. Zur Rebalancierung ($T_1 \leq T_2
\leq T_3 \leq T_4$):

Fall 2-a)


\begin{picture}
(170,50)
\put(10,5){\line(1,0){10}}
\put(20,5){\line(-1,3){5}}
\...
 ...le*{2}}
\put(147.5,32.5){\circle{7}}
\put(145,30){\makebox(5,5){q}}\end{picture}

Fall 2-b)


\begin{picture}
(172,63)
\put(5,20){\line(1,0){10}}
\put(10,35){\line(-1,-3){5}}...
 ...160,45){\line(1,-2){5}}
\put(150,57.5){\makebox(10,5){Balance $0$}}\end{picture}

3.
Delete : Auch diese Operation wird wie bei natürlichen Suchbäumen implementiert. Doch am Ende hat ggf. noch eine Rebalancierung auf dem Pfad vom gelöschten Blatt (das an die Stelle des zu löschenden Elements geschrieben wird) zur Wurzel zu erfolgen.
\fbox {\parbox[c]{12.45cm}{\textbf{Satz:}
Bei AVL-B\uml {a}umen sind die Operati...
 ...space die Anzahl der Datenelemente (oder die Anzahl
der Bl\uml {a}tter) ist.
}}

Siehe auch: In der Theorie: Sehr schöne Eigenschaften.
In der Praxis: Sehr aufwendig zu implementieren.


next up previous contents
Next: Hashing Up: Binäre Suchbäume Previous: Natürliche binäre Suchbäume
Abbas-Bardia Kabiri-Jarghouyeh
3/3/1999