Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T7 Avl RN
T7 Avl RN
AVL, RN
Operaciones auxiliares:
equilibrar(NodoABB actual)
desplazarDerecha(NodoABB actual, int cuantos)
desplazarIzquierda(NodoABB actual, int cuantos)
Modificar algoritmos de inserción/borrado
- Re-equilibrado se hace desde arriba hacia abajo
BST perfectamente equilibrados
Arboles AVL - Definición
Un árbol AVL (Adelson-Velskii y Landis) es un árbol
binario de búsqueda equilibrado
Para cada nodo, las alturas de sus subárboles izquierdo y
derecho no difieren en más de 1
El coste de sus operaciones es, por lo tanto, logarítmico
El algoritmo para mantener un árbol AVL equilibrado se
basa en reequilibrados locales, de modo que no es
necesario explorar todo el árbol después de cada
inserción o borrado
Arboles AVL – Factor de equilibrio
Cada nodo, además del dato y de las referencias a su
subárbol izquierdo y derecho, tiene un nuevo atributo: el
factor de equilibrio
El factor de equilibrio es la diferencia entre las alturas
del subárbol derecho y el izquierdo:
FE = HDer – HIzq
Por definición, para un árbol AVL, este valor debe ser -1,
0ó1
Árboles AVL - reestructación
-1
1 65
-1
45 70
0 -1 0
33 54 68
0 RSR
50 Simple
RSL
Rotación
RDR
Compuesta
RDL
Árboles AVL – rotación simple derecha (RSR)
Cuando el subárbol izquierdo de un nodo es 2 unidades
más alto que el derecho (FE = -2) y la raíz del subárbol
izquierdo tenga un FE = -1 (cargado a la izquierda)
P
Q
Árboles AVL – rotación simple derecha (RSR)
Paso 1: el subárbol derecho de Q pasa a ser el subárbol
izquierdo de P
R
Árboles AVL – rotación doble derecha (RDR)
Paso 1: el subárbol izquierdo de R pasa a ser el
subárbol derecho de Q
node.left = hijo.right;
hijo.right = node;
node = hijo;
return node;
}
...
node
Clase AVL
hijo
node.right = hijo.left;
hijo.left = node;
node = hijo;
return node;
}
}
Investigar
Investigue a cerca de los árboles Rojo Negro (RN):
Que es un RN?
Sus propiedades
Aspectos de su implementación