STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii...

43
STRUCTURI DE DATE Arbori echilibrati

Transcript of STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii...

Page 1: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

STRUCTURI DE DATE

Arbori echilibrati

Page 2: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

ARBORI BINARI ECHILIBRATI Abordari ale operatiei de echilibrare:

1. Echilibrare perfecta:

• Diferenta dintre nr. noduri SS si SD este 0, pentru fiecare

nod din arbore;

• Toate nodurile frunza sunt pe acelasi nivel;

• Orice nod de pe nivelurile intermediare are doi

descendenti (h – inaltime arbore);

2

23

10 27

18 3 25 29

Page 3: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Implementare operatie:

• Metoda divide et impera;

• Parcurgere sir de chei ordonate crescator si

inserarea valorii din mijloc in arbore;

• Volum mare de calcule: operatii de inserare

si stergere, parcurgere inordine arbore,

reconstructie structura arborescenta.

3

ARBORI BINARI ECHILIBRATI

Page 4: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 4

ARBORI BINARI ECHILIBRATI void echlibrareArbore(int *chei, int dim, int stanga, int dreapta, NodArbore

*&radacina){

if (dreapta>=stanga){

int mijloc=(dreapta+stanga)/2;

if (dreapta-stanga==1){

radacina =inserareArbore(radacina, chei[stanga]);

radacina = inserareArbore (radacina, chei[dreapta]);

}

else{

if (dreapta==stanga)

radacina = inserareArbore (radacina, chei[stanga]);

else{

radacina = inserareArbore (radacina, chei[mijloc]);

echlibrareArbore (chei,dim,stanga, mijloc-1, radacina);

echlibrareArbore (chei,dim, mijloc+1,dreapta, radacina);

}

}

}

• chei – vector: şirul sortat crescător al valorilor;

• dim – dimensiunea vectorului;

• stanga, dreapta – limitele intervalului curent;

• rădăcina arborelui ce va fi creat.

Page 5: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Mentenanta unei astfel de structuri:

• Grad de complexitate foarte ridicat;

• Recrearea arborelui perfect echilibrat după

fiecare operaţie de inserare sau ştergere cu

metoda echilibrareArb;

5

ARBORI BINARI ECHILIBRATI

Page 6: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Abordari ale operatiei de echilibrare

(continuare):

2. Echilibrare imperfecta:

• Diferenta dintre nr. noduri SS si SD este

maxim 1, pentru fiecare nod din arbore;

• Crearea structurii: utilizarea metodei

prezentate anterior, pornind de la un set de

valori sortate crescător sau descrescător;

6

ARBORI BINARI ECHILIBRATI

Page 7: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Mentenanta unei astfel de structuri:

• Grad de complexitate acceptabil;

• Metode specifice unor structuri

arborescente echilibrate particulare: AVL,

arbori B, arbori Rosu & Negru;

• Efort de prelucrare mai mic decât volumul

operaţiilor asociat reconstrucţiei arborelui

prin metoda echilibrareArb.

7

ARBORI BINARI ECHILIBRATI

Page 8: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Minimizarea efortului de cautare:

• Aranjare echilibrata a valorilor pe ambii

subarbori ai fiecărui nod.

8

23

10

27 18

3

2

23

10 27

18 3

2

23 – 10 – 3 – 2, 4 comparatii 10 – 3 – 2, 3 comparatii

ARBORI BINARI ECHILIBRATI

Page 9: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Caracteristici:

• Definit de G.M. Adelson-Velskii şi E.M.

Landis;

• Arbore binar de căutare echilibrat pe

înălţime;

• Arbore binar de căutare este AVL: gradul de

echilibru al fiecărui nod ia valori în mulţimea

{-1,0,1}.

9

ARBORI AVL

Page 10: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Gradul de echilibru al unui nod (GE):

GE = H(SD) – H(SS)

H() – funcţia de calcul a înălţimii unei structuri

arborescente; H(rad) = 1 + max (H(subarbore drept), H(subarbore stâng))

10

ARBORI AVL

Page 11: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

• Pentru GE = 0, nodul este echilibrat,

• Pentru GE=1 si GE=-1, nodul descrie un

dezechilibru la dreapta, respectiv la stânga;

situatii acceptate: pentru un număr par de valori

este imposibil sa se definească un arbore binar de

căutare în care toate nodurile sunt perfect

echilibrate.

11

23

10

27 18

3

2

GE = 0

GE = -1 GE = 0

GE = 0 GE = 0 GE = 0

ARBORI AVL

Page 12: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Mentenanta structura arbore AVL:

• Verificarea gradului de echilibru, pentru fiecare

nod în parte;

• Inserare/ştergere afectează structura arborelui şi

conduc la situaţii de dezechilibru;

• Situaţiile de dezechilibru puternic: identificate prin

indicatorul GE care ia valori în mulţimea

{-2,2}.

12

ARBORI AVL

Page 13: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Reechilibrarea arborelui binar de căutare şi

păstrarea caracteristicilor aferente arborilor

AVL:

• rotire simpla la stânga;

• rotire simpla la dreapta;

• dubla rotire la stânga;

• dubla rotire la dreapta.

13

ARBORI AVL

Page 14: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Operatia de echilibrare:

• Inserare: un arbore AVL dezechilibrat va fi

reechilibrat printr-o singură rotaţie;

• Stergere: mult mai complexă, necesitând

minim o rotaţie.

Metoda adecvata de reechilibrare: analiza

gradului de echilibru a nodurilor aflate pe

drumul de la rădăcina arborelui la locaţia

unde a fost inserat/şters un nod.

14

ARBORI AVL

Page 15: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Arbore binar AVL dezechilibrat dupa inserare nod cu

valoare cheie = 1

15

23

10

27 18

3

2

GE = -1

GE = -2 GE = 0

GE = -1 GE = 0 GE = 0

1

GE =0

ARBORI AVL

Page 16: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Aplicare metoda de reechilibrare:

• Se identifica un nod (pivot) în care se

realizează rotirea subarborelui – abordare

bottom-up pornind de la locatia nodului

inserat/sters;

• Reechilibrarea: cat mai aproape de locatia

care a generat dezechilibrul;

• Identificare operatie de rotatie: gradul de

echilibru al nodului pivot si fiu al pivotului

pe directia dezechilibrului.

16

ARBORI AVL

Page 17: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Nodul pivot (cheia 3), are GE = -2: dezechilibru la stânga.

Nodul fiu stânga (cheia 2), are dezechilibru la stânga.

Reechilibrarea se realizează prin operaţia de rotire simplă la

dreapta.

17

X

3

2

Z

?

Y

X

3

2

Z

X - Subarbore drept

pivot

GE = -2

GE = -1

?

Y

Y - Subarbore stang

fiu dreapta pivot

NOD PIVOT

GE = 0

GE = 0

NOD FIU PE

DIRECTIA

DEZECHILIBRULUI

ARBORI AVL

Page 18: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 18

3

2

?

3

2

GE = H1 – (H1 + 2) = -2

GE = H1 – (H1 + 1) = -1

?

NOD PIVOT

GE = 0

GE = 0

H1

H1+1

Z Y

H1

X

H1+1

Z

H1+2

H1

Y

H1

X

H1+1

ARBORI AVL

Procesul de rotire simplă la dreapta

Page 19: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 19

23

10

27 18

2

3

GE = 0

GE = 0 GE = 0

GE = 0

GE = 0 GE = 0

1

GE =0

ARBORI AVL

Arbore AVL reechilibrat

Page 20: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 20

23

10

27

2

30

GE = 1

GE = -1 GE = 2

GE = 0

GE = 1 GE =0

1

Nodul pivot (cheia 23), are GE = 2: dezechilibru la dreapta.

Nodul fiu stânga (cheia 27), are dezechilibru la dreapta.

Reechilibrarea se realizează prin operaţia de rotire simplă la

stanga.

ARBORI AVL

Page 21: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 21

X - Subarbore stâng

pivot 27

23

X

Y

GE = 2

GE = 1

?

Z

Y - Subarbore stang

fiu stânga pivot

NOD PIVOT

Z

27

23

Y

?

X

GE = 0

GE = 0

NOD FIU PE

DIRECTIA

DEZECHILIBRULUI

Procesul de rotire simplă la stânga

ARBORI AVL

Page 22: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 22

27

10

30

2

23

GE = 1

GE = -1 GE = 0

GE = 0 GE = 0 GE =0

1

Arbore AVL reechilibrat

ARBORI AVL

Page 23: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Se inserează în arborele AVL anterior

elementele cu valorile 16, 24, 26. Structura

arborescentă obţinută este:

23

27

10

30

2

23

GE = 2

GE = -1

GE = -2

GE = 1 GE = 0 GE =0

1

24

26

16

GE = 1 GE = 0

GE = 0

Arbore AVL dezechilibrat

ARBORI AVL

Page 24: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

• Ultima operatie: inserare nod 26;

• Analiza drumului de la nodul 26 rădăcină

conduce la identificarea pivotului, nodul 27;

• Nodul 27: puternic dezechilibrat la stânga,

nodul fiu, nodul 23, este dezechilibrat slab

pe direcţia opusă;

24

ARBORI AVL

Page 25: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Simulare rotire simplă la dreapta aplicată

pivotului

25

23

10

27

2

16

GE = 2

GE = -1 GE = 2

GE = 0 GE = -1 GE =0

1

24

26

GE = 1

GE = 0

GE = 0

30

Arbore AVL dezechilibrat

ARBORI AVL

Page 26: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Arborele AVL obtinut:

• Este dezechilibrat, dar în sens opus;

• Reechilibrarea: tot cu o rotire simplă, dar în

sens opus: va conduce la obţinerea ipotezei

iniţiale;

• Solutia este ineficienta.

26

ARBORI AVL

Page 27: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Soluţia eficientă:

• Aplicarea unei rotiri duble: constă în două

rotiri simple;

• Prima rotire: scop de a rearanja structura

arborescentă astfel încât direcţiile

dezechilibrului nodului pivot şi a fiului

acestuia să aibă acelaşi sens;

• A doua rotire are ca obiectiv reechilibrarea

arborelui;

27

ARBORI AVL

Page 28: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Soluţia eficientă (continuare):

• Cele două rotaţii sunt aplicate unor noduri

diferite;

• Prima rotaţie: nodului fiu al nodului pivot, pe

direcţia dezechilibrului;

• A două rotire: nodului pivot şi are sens opus

dezechilibrului.

28

ARBORI AVL

Page 29: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Pivotul este nodul 27, puternic dezechilibrat la

stânga.

Etape pentru a reechilibra arborele:

• Se analizează nodul fiu al nodului pivot pe

direcţia dezechilibrului, nodul 23 şi este slab

dezechilibrat la dreapta;

• Reechilibrare printr-o dublă rotaţie (pivotul

şi nodul fiu sunt dezechilibrate pe direcţii

diferite);

29

ARBORI AVL

Page 30: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Etape pentru a reechilibra arborele (cont.):

• Prima rotaţie se aplică nodului fiu; are sens identic

cu dezechilibrul nodului pivot; redefineşte situaţia

pentru aplicarea unei rotaţii simple

• A doua rotaţie se aplică nodului pivot şi are sens

opus dezechilibrului

30

ARBORI AVL

Page 31: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 31

27

10

30

2

23

GE = 2

GE = -1 GE = -2

GE = 1

GE = 0

GE =0

1

24

26

16

GE = 1 GE = 0

GE = 0

27

10

30

2

24

GE = 2

GE = -1 GE = -2

GE = -1 GE = 0 GE =0

1

26

16

23

GE = 0 GE = -1

GE = 0

NOD PIVOT

NOD FIU

A) ROTATIE SIMPLA LA STANGA B) ROTATIE SIMPLA LA DREAPTA

NOD PIVOT

24

27

2

23

GE = 1

GE = -1 GE = 0

GE = -1 GE = 0 GE =0

1

26 30 16

GE = 0 GE = 0 GE = 0

C) ARBORE REECHILIBRAT

10

ARBORI AVL

Page 32: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Reechilibrare arbore AVL prin stergerea unei

chei 16 si inserarea cheii 25.

32

24

27

2

23

GE = 2

GE = -1 GE = 2

GE = -1 GE = -1 GE =0

1

26 30

25

GE = -1

GE = 0

GE = 0

10

Arbore AVL dezechilibrat

ARBORI AVL

Page 33: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Există două noduri, 24 şi 10, ce descriu

dezechilibre puternice, GE = 2, la dreapta.

Analiza drumului de la noul nod inserat la

rădăcină arborelui, stabileşte ca fiind pivot

nodul cu valoarea 24.

33

ARBORI AVL

Page 34: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Reechilibrarea presupune:

• Rotaţie simpla la dreapta în nodul fiu al

pivotului 27; dacă pivotul are ambii fii atunci

rotaţia se face in direcţia dezechilibrului;

• Rotaţie simpla la stânga, în sens opus

dezechilibrului, în nodul pivot;

34

ARBORI AVL

Page 35: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 35

24

27

2

23

GE = 2

GE = -1 GE = 2

GE = -1 GE = -1 GE =0

1

26 30

25

GE = -1

GE = 0

GE = 0

10

NOD PIVOT

NOD FIU

A) ROTATIE SIMPLA LA DREAPTA

24

26

2

23

GE = 2

GE = -1 GE = 2

GE = -1 GE = 1 GE =0

1

25 27

30

GE = 0

GE = 0

GE = 1

10

NOD PIVOT

NOD FIU

B) ROTATIE SIMPLA LA STANGA

26

27

2

24

GE = 1

GE = -1 GE = 0

GE = 0 GE = 1

1

25 30

GE = 0

GE = 0

GE = 0

10

23

GE =0

C) ARBORE REECHILIBRAT

ARBORI AVL

Page 36: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 36

Situaţii dezechilibru arbori AVL (operatia de inserare)

Grad

echilibru

nod pivot

Nod fiu

analizat

Grad echilibru

nod fiu

Rotire

+2 dreapta +1 Simplă la stânga

+2 dreapta -1 Dublă la stânga: rotire simplă

la dreapta în fiul din dreapta

al pivotului; rotire simplă la

stânga în pivot.

-2 stânga -1 Simplă la dreapta

-2 stânga +1 Dublă la dreapta: rotire

simplă la stânga în fiul din

stânga al pivotului; rotire

simplă la dreapta în pivot.

ARBORI AVL

Page 37: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Din arborele AVL de mai jos, se şterge nodul

50.

37

47

35

50 37

22

16

42

31

9 27 32

29 GE =0

GE =0 GE =0

GE =0

GE =0 GE = -1

GE = -1 GE = -1

GE = 1

GE = 1

GE = -1

GE = -1 47

35 stiva

ARBORI AVL

Page 38: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 38

47

35

37

22

16

42

31

9 27 32

29 GE =0

GE =0 GE =0 GE =0 GE = -1

GE = -1 GE = -1

GE = 1

GE = 1

GE = -2

GE = -1 35 stiva

42

35

37

22

16 47

31

9 27 32

29 GE =0

GE =0

GE =0

GE =0 GE = -1

GE = -1 GE = -1

GE = 1

GE = 0

GE =0

GE = -2

Structură arborescenta de tip AVL dezechilibrată prin

aplicarea unei rotaţii duble (1. stanga in 37, 2. dreapta

in 42)

ARBORI AVL

Page 39: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Printr-o rotaţie la dreapta în nodul cu valoarea

35 considerat pivot, arborele AVL este

reechilibrat.

Deoarece stiva a fost golită, operaţie de

ştergere se consideră încheiată

39

GE =0

GE = -1

42

35

37

22

16 47 31

9 27 32

29 GE =0

GE =0

GE =0

GE =0 GE = -1

GE = -1 GE = -1

GE = 1

GE = 0

GE =0

GE = -2

GE =0

42

35

37

22

16

47

31

9

27 32

29

GE =0 GE =0

GE =0

GE = -1

GE =0

GE = 1

GE = 0

GE =0

(1)

(2)

Structură arborescenta de tip AVL

ARBORI AVL

Page 40: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Situaţii de dezechilibru diferite de ipotezele analizate

la operaţia de inserare

40

GE =0

19

17

16 20

23

GE =0

GE = 1

GE = 0

GE =0 GE =0

19

17

20

23

GE = 2

GE = 0

GE =0

GE = -1

19

20

23 17

GE = 0

GE =0

GE = -1

Ştergere din structură arborescenta de tip AVL

Pivotul are un grad de echilibru +2, iar nodul fiu de pe direcţia

dezechilibrului are un echilibru 0.

Soluţia este data de o rotaţie simplă în pivot la stânga.

ARBORI AVL

Page 41: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Caracteristici:

• Tipologie de arbori binari de căutare

echilibraţi;

• Definiţi de Rudolf Bayer în 1972 sub forma

de arbori simetrici;

• Nodurile sunt plasate în mod simetric în

subarborii stânga sau dreapta.

41

ARBORI ROSU&NEGRU

Page 42: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu

Factorul cel mai important este dat de culoarea

fiecărui nod:

• Fiecare nod are una dintre cele două culori, roşu

sau negru;

• Nodul rădăcină este întotdeauna negru;

• Ambele noduri fiu ale unui nod părinte roşu sunt

negre; un nod roşu nu poate avea ca părinte decât

un nod negru;

• toate drumurile de la rădăcină la oricare din

nodurile frunză conţin acelaşi număr de noduri

negre.

42

ARBORI ROSU&NEGRU

Page 43: STRUCTURI DE DATE - ASE · Reechilibrare arbore AVL prin stergerea unei chei 16 si inserarea cheii 25. 32 24 27 2 23 GE = 2 GE = -1 GE = 2 GE =0 GE = -1 GE = -1 1 26 30 25 GE = -1

http://www.acs.ase.ro

http://www.itcsolutions.eu 43

23

15

27 18

3

2

Structură arborescenta de tip Roşu & Negru

ARBORI ROSU&NEGRU