Arboles AVL

13
Arboles AVL Ing. Juan Ignacio Zamora M. M.Sc

Transcript of Arboles AVL

Page 1: Arboles AVL

Arboles AVLIng. Juan Ignacio Zamora M. M.Sc

Page 2: Arboles AVL

Arboles AVL

Desarrollados en 1962 por Adelson-

Velskii y Landis (AVL)

Nacen debido a la diferenciaentre los rendimientos del caso

promedio O(logn) y el peor caso

O(n) en la busqueda del arbol

binario.

Los Arboles AVL son Arboles

Binarios de Busqueda; los cuales

estan definidos segun el Factor de

Equilibrio (Fe)

F L

J

H

P

-1

1

0

1

0

Fe = h(der) – h(izq)

Page 3: Arboles AVL

Revision de CodigoArbol Equilibrado no Binario de Busqueda!

Page 4: Arboles AVL

Generar un Arbol AVL :: Estrategias

Insertar y generar un arbol AVL

binario de busqueda

Ya se tiene un Arbol Binario de

Busqueda, pero no esta balanceado

Page 5: Arboles AVL

Insercion de un Nodo : Proceso

Recuerden que estamos trabajando con arboles binaries de busqueda. Se

debe inserter de la misma forma que en el ABB.

Una vez que insertamos el nodo, debemos regresar por el mismo camino y

vamos a actualizar el Fe de cada nodo. Si, esto quiere decir que la clase

UNode ahora tiene una variable int Fe, que almacena el factor de

Equilibrio.

En el momento en el cual se irrumpa la condicion de equilibrio, se debe

proceder a re-acomodar el arbol con base a rotaciones.

Existen 4 principals violaciones al factor de equilibrio

Page 6: Arboles AVL

Caso 1: Rotacion Izq-Izq (ii)

Se insertan C,B,A

C irrumpe el factor de equilibrio

Se hace una rotacion Izq-Izq

Se obtiene el sub arbol balanceado

B

J

C

B

C-1

0

-2

-1

0

B

J C 0

0

0n1

n

• n.Izq = n1.Der

• n1.Der = n

• n = n1

Algoritmo - Rotacion

Page 7: Arboles AVL

Caso 2: Rotacion Der-Der (dd)

Se insertan A,B,C

C irrumpe el factor de equilibrio

Se hace una rotacion Izq-Izq

Se obtiene el sub arbol balanceado

B

A

1

00

B

A C 0

0

0B

C

A2

1

n1

n

• n.Der = n1.Izq

• n1.Izq = n

• n = n1

Algoritmo - Rotacion

Page 8: Arboles AVL

Caso 3: Rotacion Der-Izq (di)

0

B

A C0

0

0C

B

A2

-1n1

n • n1.Izq = n2.Der

• n2.Der = n1

• n.Der = n2.Izq

• n2.Izq = n

• n = n2 n2

Algoritmo - Rotacion

Page 9: Arboles AVL

Caso 4: Rotacion Izq-Der (id)

0

B

A C0

0

0A

B

C-2

1 n1

n • n1.Der = n2.Izq

• n2.Izq = n1

• n.Izq = n2.Der

• n2.Der = n

• n = n2 n2

Algoritmo - Rotacion

Page 10: Arboles AVL

Resuelva en Papel

• Indique en cada caso,

que rotacion se debe

aplicar.

• Aplique el Algoritmo de

Rotacion para cada

Arbol

• Calcule los nuevos

Factores de Equilibrio

Caso:Alpha Caso:Beta

Caso:Gamma Caso:Miu

Page 11: Arboles AVL
Page 12: Arboles AVL
Page 13: Arboles AVL

Problem?

1.Utilizandos las estructuras de datos y las

clases Utree y UNode desarrolladas la

semana pasada desarrolle:

1. Insert-AVL(T,x), donde x es un UNode

2.Balance-AVL(T,x) balancea un arbol a

partir del nodo x

3.Delete-AVL(T, v) donde v es el valor

del nodo a borrar

Esta practica junto a todas

las clases desarrolladas se

suben al foro “AVL”.