Arboles AVL Rotaciones

10
ESTRUCTURA DE DATOS II ESTRUCTURA DE DATOS II ROTACIONES EN ÁRBOLES AVL ROTACIONES EN ÁRBOLES AVL PROFESOR: PROFESOR: Ing. Evans Balcazar Veizaga Ing. Evans Balcazar Veizaga

description

Arboles AVL Rotaciones

Transcript of Arboles AVL Rotaciones

Page 1: Arboles AVL Rotaciones

ESTRUCTURA DE DATOS IIESTRUCTURA DE DATOS IIROTACIONES EN ÁRBOLES AVL ROTACIONES EN ÁRBOLES AVL

PROFESOR:PROFESOR:

Ing. Evans Balcazar VeizagaIng. Evans Balcazar Veizaga

Page 2: Arboles AVL Rotaciones

Rotaciones de Nodos   Rotaciones de Nodos   ::Los reequilibrados se realizan mediante rotaciones, Los reequilibrados se realizan mediante rotaciones,

en el siguiente punto veremos cada caso, ahora en el siguiente punto veremos cada caso, ahora vamos a ver las cuatro posibles rotaciones que vamos a ver las cuatro posibles rotaciones que podemos aplicar y son Simples y Dobles.podemos aplicar y son Simples y Dobles.

Rotación simple a la derecha (SD):Rotación simple a la derecha (SD): Rotación simple a la izquierda (SI):Rotación simple a la izquierda (SI): Rotación doble a la derecha (DD):Rotación doble a la derecha (DD): Rotación doble a la izquierda (DI):Rotación doble a la izquierda (DI):

Page 3: Arboles AVL Rotaciones

AVL – Definición Formal: AVL – Definición Formal: Definición del altura de un árbolDefinición del altura de un árbol

Sea Sea TT un árbol binario de búsqueda y sean un árbol binario de búsqueda y sean TiTi y y TdTd sus subárboles, su altura sus subárboles, su altura HH((TT), ), es:es: 0 si el árbol 0 si el árbol TT está vacío está vacío 1 + max(1 + max(HH((TiTi),),HH((TdTd)) si no lo está )) si no lo está

Definición de árbol AVLDefinición de árbol AVL

Sea Sea TT un árbol binario de búsqueda con un árbol binario de búsqueda con TiTi y y TdTd siendo sus subárboles izquierdo y siendo sus subárboles izquierdo y derecho respectivamente, tenemos que:derecho respectivamente, tenemos que:

Si Si TT es vacío, es un árbol AVL es vacío, es un árbol AVL

Si Si TT es un ABB no vacío, es AVL si (si y sólo si): es un ABB no vacío, es AVL si (si y sólo si): TiTi y y TdTd son AVL y son AVL y HH((TiTi) − ) − HH((TdTd) = − 1, 0 ó + 1 (factor de equilibrio)) = − 1, 0 ó + 1 (factor de equilibrio)

Page 4: Arboles AVL Rotaciones

Rotación Simple a la Derecha: Rotación Simple a la Derecha: Se usará cuando el subárbol izquierdo de un nodo sea 2 unidades más alto que el Se usará cuando el subárbol izquierdo de un nodo sea 2 unidades más alto que el

derecho, es decir, cuando su FE sea de -2. Y además, la raíz del subárbol derecho, es decir, cuando su FE sea de -2. Y además, la raíz del subárbol izquierdo tenga una FE de -1, es decir, que esté cargado a la izquierda.izquierdo tenga una FE de -1, es decir, que esté cargado a la izquierda.

1. Pasamos el subárbol derecho del nodo Q como subárbol izquierdo de P. Esto mantiene el árbol como ABB, ya que todos los valores a la derecha de Q siguen estando a la izquierda de P.

2. El árbol P pasa a ser el subárbol derecho del nodo Q.

3. Ahora, el nodo Q pasa a tomar la posición del nodo P, es decir, hacemos que la entrada al árbol sea el nodo Q, en lugar del nodo P. Previamente, P puede que fuese un árbol completo o un subárbol de otro nodo de menor altura.

Arbol AVL FinalArbol AVL Final

Page 5: Arboles AVL Rotaciones

Rotación Simple a la Izquierda: Rotación Simple a la Izquierda: SSe usará cuando el subárbol derecho de un nodo sea 2 unidades más alto que el e usará cuando el subárbol derecho de un nodo sea 2 unidades más alto que el

izquierdo, es decir, cuando su FE sea de 2. Y además, la raíz del subárbol izquierdo, es decir, cuando su FE sea de 2. Y además, la raíz del subárbol derecho tenga una FE de 1, es decir, que esté cargado a la derecha. derecho tenga una FE de 1, es decir, que esté cargado a la derecha.

1. Pasamos el subárbol izquierdo del nodo Q como subárbol derecho de P. Esto mantiene el árbol como ABB, ya que todos los valores a la izquierda de Q siguen estando a la derecha de P.

2. El árbol P pasa a ser el subárbol izquierdo del nodo Q.

3. Ahora, el nodo Q pasa a tomar la posición del nodo P, es decir, hacemos que la entrada al árbol sea el nodo Q, en lugar del nodo P. Previamente, P puede que fuese un árbol completo o un subárbol de otro nodo de menor altura.

Arbol AVL FinalArbol AVL Final

Page 6: Arboles AVL Rotaciones

Rotación Doble a la Derecha: Rotación Doble a la Derecha: SSe usará cuando el subárbol izquierdo de un nodo sea 2 unidades más alto que el e usará cuando el subárbol izquierdo de un nodo sea 2 unidades más alto que el

derecho, es decir, cuando su FE sea de -2. Y además, la raíz del subárbol derecho, es decir, cuando su FE sea de -2. Y además, la raíz del subárbol izquierdo tenga una FE de 1, es decir, que esté cargado a la derecha. izquierdo tenga una FE de 1, es decir, que esté cargado a la derecha.

4. Haremos una rotación simple de Q a la izquierda.

5. Después, haremos una rotación simple

de P a la derecha.

Arbol AVL FinalArbol AVL Final

Page 7: Arboles AVL Rotaciones

Rotación Doble a la Izquierda: Rotación Doble a la Izquierda: Se usará cuando el subárbol derecho de un nodo sea 2 unidades más alto que el Se usará cuando el subárbol derecho de un nodo sea 2 unidades más alto que el

izquierdo, es decir, cuando su FE sea de 2. Y además, la raíz del subárbol izquierdo, es decir, cuando su FE sea de 2. Y además, la raíz del subárbol derecho tenga una FE de -1, es decir, que esté cargado a la izquierda. Se trata del derecho tenga una FE de -1, es decir, que esté cargado a la izquierda. Se trata del caso simétrico del anterior. caso simétrico del anterior.

4. Haremos una rotación simple de Q a la derecha.

5. Después, haremos una rotación simple

de P a la izquierda.

Árbol AVL FinalÁrbol AVL Final

Page 8: Arboles AVL Rotaciones

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 9: Arboles AVL Rotaciones

¿Ahora a Trabajar?¿Ahora a Trabajar?

Page 10: Arboles AVL Rotaciones

INF-310 Estructura de Datos II