9
ESTRUCTURA DE DATOS II ESTRUCTURA DE DATOS II INSERCION Y ELMINACION EN INSERCION Y ELMINACION EN ÁRBOLES AVL ÁRBOLES AVL PROFESOR: PROFESOR: Ing. Evans Balcazar Veizaga Ing. Evans Balcazar Veizaga

Insercion Arboles AVL

Embed Size (px)

Citation preview

Page 1: Insercion Arboles AVL

ESTRUCTURA DE DATOS IIESTRUCTURA DE DATOS IIINSERCION Y ELMINACION EN INSERCION Y ELMINACION EN

ÁRBOLES AVL ÁRBOLES AVL PROFESOR:PROFESOR:

Ing. Evans Balcazar VeizagaIng. Evans Balcazar Veizaga

Page 2: Insercion Arboles AVL

Practica 2:Practica 2:1.1. Realice una definición para el ADT Nodo Realice una definición para el ADT Nodo

para de un ADT árbol AVL.para de un ADT árbol AVL.2.2. Realice la definición del ADT árbol AVL.Realice la definición del ADT árbol AVL.3.3. Implemente el procedimiento para obtener la Implemente el procedimiento para obtener la

altura de un árbol.altura de un árbol.4.4. Implemente el procedimiento para calcular Implemente el procedimiento para calcular

FE (Factor de Equilibrio del árbol)FE (Factor de Equilibrio del árbol)

Page 3: Insercion Arboles AVL

Inserción de un Nodo: Inserción de un Nodo: Pueden suceder dos cosas: que el árbol se mantenga como AVL o que pierda Pueden suceder dos cosas: que el árbol se mantenga como AVL o que pierda

esta propiedad. En el segundo caso siempre estaremos en uno de los casos esta propiedad. En el segundo caso siempre estaremos en uno de los casos explicados anteriormente, y recuperaremos el estado AVL aplicando la rotación explicados anteriormente, y recuperaremos el estado AVL aplicando la rotación adecuada, supongamos que en siguiente árbol AVL adecuada, supongamos que en siguiente árbol AVL insertamos el nodo de insertamos el nodo de valor 8.valor 8.

1. Los cambios de altura en una rama se producen sólo cuando el FE del nodo raíz de esa rama ha cambiado de 0 a 1 ó de 0 a -1

2. cualquier nodo nuevo será un nodo hoja, de modo que su FE será siempre 0.

3. Ahora actualizamos el valor de FE del nodo padre del que acabamos de insertar (P) y así sucesivamente verificando el punto 1.

Page 4: Insercion Arboles AVL

Reequilibrio por Inserción: Reequilibrio por Inserción: En el caso, cuando el valor de FE de un nodo tome el valor -2 ó 2, no En el caso, cuando el valor de FE de un nodo tome el valor -2 ó 2, no

seguiremos el camino, sino que, con el valor de FE de el nodo actual y el del seguiremos el camino, sino que, con el valor de FE de el nodo actual y el del nodo derecho si FE es 2 o el del nodo izquierdo si es -2, determinaremos qué nodo derecho si FE es 2 o el del nodo izquierdo si es -2, determinaremos qué tipo de rotación debemos hacer tipo de rotación debemos hacer

RSINo importa12

RDINo importa-12

RDD1No importa-2

RSD-1No importa-2

RotaciónFE del nodo izquierdo

FE del nodo derecho

FE nodo actual

Page 5: Insercion Arboles AVL

Eliminación de un Nodo: Eliminación de un Nodo: Lo mismo que cuando se insertan nodos, el algoritmo es el mismo que en Lo mismo que cuando se insertan nodos, el algoritmo es el mismo que en

árboles ABB, pero después de eliminar el nodo debemos recorrer el camino árboles ABB, pero después de eliminar el nodo debemos recorrer el camino hacia la raíz recalculando los valores de FE, y equilibrando el árbol si es hacia la raíz recalculando los valores de FE, y equilibrando el árbol si es necesario. Supongamos el siguiente ejemplo, en el árbol AVL necesario. Supongamos el siguiente ejemplo, en el árbol AVL eliminaremos el eliminaremos el nodo de valor 3nodo de valor 3

2. El razonamiento cuando se eliminan nodos es que se obtiene un nodo con FE de -2.

3. Se realizará una rotación a derecha, y la rotación dependerá del valor de FE del nodo izquierdo al que muestra el desequilibrio. Si es 0 ó -1 haremos una rotación simple, si es 1, haremos una rotación doble.

Page 6: Insercion Arboles AVL

Reequilibrio por Eliminación: Reequilibrio por Eliminación: El razonamiento es similar cuando se eliminan nodos y el resultado es que se El razonamiento es similar cuando se eliminan nodos y el resultado es que se

obtiene un nodo con FE de -2, en este caso se realizará una rotación a derechas, obtiene un nodo con FE de -2, en este caso se realizará una rotación a derechas, y la rotación dependerá del valor de FE del nodo izquierdo al que muestra el y la rotación dependerá del valor de FE del nodo izquierdo al que muestra el desequilibrio. Si es 0 ó -1 haremos una rotación simple, si es 1, haremos una desequilibrio. Si es 0 ó -1 haremos una rotación simple, si es 1, haremos una rotación doble.rotación doble.

RSINo importa12

RSINo importa02

RDINo importa-12

RDD1No importa-2

RSD0No importa-2

RSD-1No importa-2

RotaciónFE del nodo izquierdo

FE del nodo derechoFE nodo actual

Page 7: Insercion Arboles AVL

Practica 3:Practica 3:1.1. Mostrar los pasos de ejecución y la estructura de árbol resultante al aplicar las Mostrar los pasos de ejecución y la estructura de árbol resultante al aplicar las

siguientes operaciones sobre un árbol AVL inicialmente vacío: Inserta(8), siguientes operaciones sobre un árbol AVL inicialmente vacío: Inserta(8), Inserta(20), Inserta(12), Inserta(5), Inserta(35), Inserta(40), Inserta(7), Elimina(35), Inserta(20), Inserta(12), Inserta(5), Inserta(35), Inserta(40), Inserta(7), Elimina(35), Inserta(10), Elimina(20), Elimina(5).Inserta(10), Elimina(20), Elimina(5).

2.2. Los árboles AVL son utilizados como un método para representar conjuntos Los árboles AVL son utilizados como un método para representar conjuntos ordenados. Propón un esquema (en pseudocódigo) para implementar las ordenados. Propón un esquema (en pseudocódigo) para implementar las operaciones operaciones UniónUnión, , IntersecciónIntersección y y DiferenciaDiferencia. Compara la eficiencia de estas . Compara la eficiencia de estas operaciones con la conseguida en otras implementaciones de conjuntos ordenados. operaciones con la conseguida en otras implementaciones de conjuntos ordenados.

3.3. Dada la siguiente estructura de árbol, comprobar si Dada la siguiente estructura de árbol, comprobar si

se trata de un árbol AVL. En caso afirmativo,se trata de un árbol AVL. En caso afirmativo,

¿cómo se puede comprobar si se trata del peor caso ¿cómo se puede comprobar si se trata del peor caso

de esta estructura (en cuanto a máximo desequilibrio)?de esta estructura (en cuanto a máximo desequilibrio)?

En caso contrario, ¿cómo se puede reequilibrar En caso contrario, ¿cómo se puede reequilibrar

para convertirlo en un árbol AVL?para convertirlo en un árbol AVL?

20

10

13

16

5

6 1

7

30

35 23

25

Page 8: Insercion Arboles AVL

¿Ahora a Trabajar?¿Ahora a Trabajar?

Page 9: Insercion Arboles AVL

INF-310 Estructura de Datos II