Professional Documents
Culture Documents
Arborii AVL (Adelson-Velski, Landis) sunt arbori binari de cutare n care fiecare subarbore este
echilibrat n nltime. Pentru a recunoaste rapid o dezechilibrare a arborelui s-a introdus n fiecare
nod un cmp suplimentar, care s arate fie nltimea nodului, fie diferenta dintre nltimile celor doi
subarbori pentru acel nod ( 1, 0, 1 pentru noduri echilibrate si 2 sau +2 la producerea unui
dezechilibru).+
La adugarea unui nou nod (ca frunz) factorul de echilibru al unui nod interior se poate modifica la
2 (adugare la subarborele stnga) sau la +2 (adugare la subarborele dreapta), ceea ce va face
necesar modificarea structurii arborelui.
Reechilibrarea se face prin rotatii simple sau duble, nsotite de recalcularea nltimii fiecrui nod
ntlnit parcurgnd arborele de jos n sus, spre rdcin.
- Insertia n subarborele dreapta al unui fiu dreapta necesit o rotatie simpl la stnga
- Insertia n subarborele stnga al unui fiu stnga necesit o rotatie simpl la dreapta
- Insertia n subarborele stnga al unui fiu dreapta necesit o rotatie dubl la stnga
- Insertia n subarborele dreapta al unui fiu stnga necesit o rotatie dubl la dreapta
Inltimea maxim a unui arbore AVL este 1.44*log(n), deci n cazul cel mai ru cutarea ntr-un
arbore AVL nu necesit mai mult de 44% comparatii fat de cele necesare ntr-un arbore perfect
echilibrat. In medie, este necesar o rotatie (simpl sau dubl) cam la 46,5% din adugri si este
suficient o singur rotatie pentru refacere.
Implementarea care urmeaz memoreaz n fiecare nod din arbore nltimea sa, adic nltimea
subarborelui cu rdcina n acel nod. Un nod vid are nltimea 1, iar un nod frunz are nltimea 0.
} tnod;
r = f;
r ->dr = f ->st;
r = f;
r ->val=x;
return;
Arborii AVL reprezinta o alternativa putin costisitoare la arborii binari obisnuiti. Cu pretul unor
reechilibrari suplimentare si fara a modifica semnificativ performanta insertiei si suprimarii cheilor
(celelalte operatii ramanand nemodificate), proprietatea de echilibru AVL a unui arbore binar
ordonat duce la cautari mult mai rapide decat in cazul unui arbore binar ordonat obisnuit, datorita
inaltimii mai mici
S-a demonstrat ca un arbore echilibrat AVL va avea intotdeauna inaltimea cuprinsa intre [log2N+1] si
[1,43log2N+1], unde N reprezinta numarul de chei din arbore si [x] este partea intreaga a lui x Spre
comparatie, un arbore binar ordonat perfect echilibrat va avea intotdeauna inaltimea egala cu
[log2N+1] dar a-l mentine perfect echilibrat este mult mai costisitor (ca timp) decat in cazul arborilor
AVL .De asemenea, un arbore binar ordonat obisnuit va avea inaltimea cuprinsa intre [log2N+1] si N,
deci poate ajunge la inaltimi mult mai mari decat un arbore AVL cu aceleasi chei