Vous êtes sur la page 1sur 14

rboles AVL Factor de equilibrio

0 1 -1

FE = ASD - ASI
FE: Factor de Equilibrio ASD: Altura del Subrbol Derecho ASI: Altura del Subrbol Izquierdo

-2

-1

Facto r 2 Desequilibrio hacia la derecha Equilibrado Desequilibrio hacia la izquierda


1

-2

1 0 -1 -2

-1

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Qu rotacin aplicar?


Si un rbol est desbalanceado hacia la izquierda (-2), aplicar rotacin hacia derecha En un rbol que est desbalanceado hacia la izquierda revisar el factor de equilibrio del subrbol izquierdo
-2

Si un rbol est desbalanceado hacia la derecha (2), aplicar rotacin hacia izquierda En un rbol que est desbalanceado hacia la derecha revisar el factor de equilibrio del subrbol derecho
2

-1

Si el signo de los factores coincide, se aplica una rotacin simple


-2 2

-1

Si el signo de los factores no coincide, se aplica una rotacin doble

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Simples

A la izquierda (RSI)
Pivote

A la derecha (RSD)

a c b c a b d a b d a c c

Pivote

rboles opcionales, pueden o no existir

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Simples

A la izquierda (RSI)
Pivote

a c

A 2 3 aux1

a b c a b d b d
aux2 1

aux1 =(*A)->der; aux2 = aux1->izq; (*A)->der = aux2; aux1->izq = (*A); (*A) = aux1;

c d

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Simples

A la derecha (RSD)

d c a c a b d b

Pivote 2 3 aux1

d
1

aux1 =(*A)->izq; aux2 = aux1->der; (*A)->izq = aux2; aux1->der = (*A); (*A) = aux1;

c a b

aux2

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Ejemplo con rotaciones simples a la izquierda


Inserte en un rbol AVL la siguiente secuencia: 1, 2, 3, 4, 5, 6, 7, 8, 9
2 RSI 1 2 1

1
P

2
2

RSI

P 2

RSI

4 2
P 2

RSI

2 3

1
P

3
1

1 4 5 3

4 5 6 1

5
1

6 7

4 2 1 3 5 6
P

RSI

4 2 0 6 1 3 5 7 8 0 9

7 2 8 1 9

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Ejemplo con rotaciones simples a la derecha


Inserte en un rbol AVL la siguiente secuencia: 9, 8, 7, 6, 5, 4, 3, 2, 1
-2 P RSD -2 -2 P

9
-1

8 7
-1 P

RSD -1

8 6 5 4 7

RSI -2

6 5 P
-1

RSI

8 7 5

9 4 3

8 7 9

-1

6 4
-2

RSI -1

6
0

8
0

4 9 1 2 3 5 7

8 9

3
-1

2 1

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Dobles


A la izquierda (RDI)
Pivote

A la derecha (RDD)

a e c a

Pivote

c d b c e a b d e d

b c a b d

rboles opcionales, pueden o no existir

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Dobles


A la izquierda como una secuencia de dos rotaciones simples (RDI)
1) RSD en el subrbol derecho 2) RSI en la raz

a e c b d
Pivote

Pivote

a c b d e a b

c e d

void rotdobizq(tipo_arbol *A) { rotsimder(&(*A)->der); rotsimizq(A); }


rbol opcional, puede o no existir

2006 M.S.I. Alfredo Gutirrez Hdez.

rboles AVL Rotaciones Dobles


A la derecha como una secuencia de dos rotaciones simples (RDD)
1) RSI en el subrbol izquierdo
Pivote

2) RSD en la raz

e
Pivote

e c a d b b

c e d

a c b d a

void rotdobder(tipo_arbol *A) { rotsimizq(&(*A)->izq); rotsimder(A); }


rbol opcional, puede o no existir

2006 M.S.I. Alfredo Gutirrez Hdez.

10

rboles AVL Rotaciones Dobles


A la izquierda (RDI)
Pivote

a e c
aux2

A 5

a
3

aux1

aux1 =(*A)->der; aux2 = (*A)->der->izq; aux3 = aux2 -> izq; aux 4 = aux2->der; (*A)->der = aux3 aux1-> izq = aux4; aux2->izq = (*A); aux2->der = aux1; (*A) = aux2;

e
4 aux4

b c a b d

aux3

c
1 2

2006 M.S.I. Alfredo Gutirrez Hdez.

11

rboles AVL Rotaciones Dobles


A la derecha (RDD)
Pivote

e
aux1

A 5

a c

e
3

aux1 =(*A)->izq; aux2 = aux1->der; aux3 = aux2 -> der; aux4 = aux2->izq; (*A)->izq = aux3 aux1->der = aux4; aux2->der = (*A); aux2->izq = aux1; (*A) = aux2;

a b c a b d e d
4 aux4

aux2

aux3

c
2 1

2006 M.S.I. Alfredo Gutirrez Hdez.

12

rboles AVL Ejemplo con rotaciones dobles a la izquierda


Inserte en un rbol AVL la siguiente secuencia: 1, 3, 2, 8, 5, 4, 10, 9, 7, 6
P 2 RDI -1 RDI P 2 2 P

1 3 2

2 3

2 5 3 4
-1

RDI

3 2 1 4 5
P 2

RDI

1
-1

8 5

8 10 9
-1

3
2

P P RDI

3 8 5
-1

RDI

5 0 3 -1 8 7 -1 6
0 1 9

2 1 4

5 9 8
-1

2 1 4 6

9 7 10 1

2 -1 0 4

10

10

2006 M.S.I. Alfredo Gutirrez Hdez.

13

rboles AVL Ejemplo con rotaciones dobles a la derecha


Inserte en un rbol AVL la siguiente secuencia: 10, 8, 9, 3, 6, 7, 1, 2, 4, 5
2 2 P RDD 2 P

10
-1 8

9 8 10

RDD -1

9 6 8 7

P RDD

8 6
2

RDD

10 3

9 7 10

-1

3 6

-1

1 2

8
2

8
RDD

P RDD

6 0 9 3 0 10 2 -1 1 4 1 5 7 0 8 0
1 9

6
-1

9 7 10 1 2

-1

3 6 4 5 7

2 3 4

10

2006 M.S.I. Alfredo Gutirrez Hdez.

14

Vous aimerez peut-être aussi