Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TABLA DE CONTENIDO
1. INTRODUCCIÓN 2
2. ÁRBOLES AVL (ÁRBOLES BALANCEADOS POR ALTURA) 2
2.1. DEFINICIÓN 2
2.2. OPERACIONES BÁSICAS 4
2.2.1. ALGORITMO DE BÚSQUEDA 4
2.2.2. ALGORITMO DE INSERCIÓN 4
2.2.3. ALGORITMO DE ELIMINACIÓN 7
3. ÁRBOLES PERFECTAMENTE BALANCEADOS (BALANCEADOS POR PESO) 8
4. ÁRBOLES ROJI-NEGROS 8
EN RESUMEN 10
PARA TENER EN CUENTA 10
*
Resumen del libro Estructuras de Datos en Java de Alejandro Sotelo Arévalo, cuya publicación está pendiente.
ESTRUCTURAS DE DATOS 1
1. INTRODUCCIÓN
Como es posible que los árboles binarios ordenados se degeneren alcanzando una altura
similar a su peso, entonces la complejidad temporal de las operaciones básicas se podría
degradar a (recuerde que un árbol degenerado cumple que su altura es igual a su
peso). Para no degradar la eficiencia es necesario balancear los árboles, procurando que todo
nodo tenga aproximadamente la mitad de sus descendientes a la izquierda y el resto de
descendientes a la derecha. Estudiaremos tres tipos de árboles binarios ordenados
balanceados que son capaces de garantizar complejidades logarítmicas sobre las operaciones
básicas de búsqueda, inserción, eliminación y modificación: los árboles AVL, los árboles
perfectamente balanceados, y los árboles Roji-negros.
La teoría expuesta en esta sección está inspirada en el libro Diseño y Manejo de Estructuras
de Datos en C de Jorge Villalobos †.
2.1. DEFINICIÓN
Un árbol AVL (también conocido como árbol balanceado por altura) se puede definir
recursivamente así:
1. El árbol vacío es un árbol AVL, por definición.
2. El árbol no vacío
val val : raíz
†
VILLALOBOS, Jorge A. Diseño y Manejo de Estructuras de Datos en C. Bogotá: McGraw-Hill, 1996.
ESTRUCTURAS DE DATOS 2
Es decir, la altura del subárbol derecho menos la altura del subárbol izquierdo está entre
y .
Tanto el subárbol izquierdo como el subárbol derecho son árboles AVL.
Dado un árbol, un factor de balanceo de significa que sus dos subárboles tienen igual
altura, un factor de balanceo de significa que su subárbol izquierdo tiene niveles más
de altura que su subárbol derecho, y un factor de balanceo de significa que su subárbol
derecho tiene niveles más de altura que su subárbol izquierdo.
Gráfica 1: Procedimiento mnemotécnico para el cálculo de los factores de balanceo por altura.
Un árbol AVL se puede definir como un árbol binario ordenado tal que todos sus nodos
tienen un factor de balanceo por altura entre menos uno y uno.
Todo árbol AVL cumple que donde es el peso y es la altura del árbol.
ESTRUCTURAS DE DATOS 3
2.2. OPERACIONES BÁSICAS
Como todo árbol AVL es también un árbol binario ordenado, el algoritmo de búsqueda es el
mismo que ya estudiamos para árboles binarios ordenados, que tiene complejidad temporal
donde es la altura del árbol. Gracias a que en todo árbol AVL se cumple que
, entonces la complejidad temporal del algoritmo de búsqueda sería
en todo caso.
a b b
2
a
Este escenario sucede cuando la inserción del valor x se efectúa a la izquierda de la izquierda
del nodo que se desbalanceó. Para arreglar el árbol se debe realizar una rotación a la derecha
sobre el nodo e.
e -2 f 0
f -1 rotación e 0
derecha Se rota a la derecha el nodo e
c
b a b c
a
ESTRUCTURAS DE DATOS 4
3.2.2. Caso Der-Der (Derecha-Derecha):
e +1 e +2
f 0 insertar x f +1 La inserción se efectúa en el
subárbol c, aumentando su altura
a a
b c b
2
c
Este escenario sucede cuando la inserción del valor x se efectúa a la derecha de la derecha
del nodo que se desbalanceó. Para arreglar el árbol se debe realizar una rotación a la
izquierda sobre el nodo e.
e +2 f 0
f +1 rotación e 0
izquierda Se rota a la izquierda el nodo e
a
b a b c
c
3.2.3. Caso Izq-Der (Izquierda-Derecha):
e -1 e -2
f 0 f +1 La inserción se efectúa en el
insertar x
subárbol b1 o en el subárbol b2,
g? aumentando su altura
c c
a b a 2
b1 b2
Este escenario sucede cuando la inserción del valor x se efectúa a la derecha de la izquierda
del nodo que se desbalanceó. Para arreglar el árbol se debe realizar una rotación a la
izquierda sobre el nodo f y luego una rotación a la derecha sobre el nodo e,
independientemente de si la inserción afectó el subárbol b1 o el subárbol b2.
e -2 e -2 g 0
Se rota a la izquierda
f +1 rotación g -1 rotación f? e? el nodo f, y luego se
g? izquierda f? derecha se rota a la derecha
c c
el nodo e
a b2 a b1 b2 c
b1 b2 a b1
3.2.4. Caso Der-Izq (Derecha-Izquierda):
e +1 e +2
f 0 f -1 La inserción se efectúa en el
insertar x
subárbol b1 o en el subárbol b2,
a a
g? aumentando su altura
b c c
2
b1 b2
Este escenario sucede cuando la inserción del valor x se efectúa a la izquierda de la derecha
del nodo que se desbalanceó. Para arreglar el árbol se debe realizar una rotación a la derecha
sobre el nodo f y luego una rotación a la izquierda sobre el nodo e, independientemente de
si la inserción afectó el subárbol b1 o el subárbol b2.
ESTRUCTURAS DE DATOS 5
e +2 e +2 g 0
Se rota a la derecha
f -1 rotación g +1 rotación e? f? el nodo f, y luego se
g? derecha f? izquierda se rota a la izquierda
a a
el nodo e
c b1 a b1 b2 c
b1 b2 b2 c
3.2.1. Insertar
(Izq-Izq) el valor
Insertar
2.
el valor
3.2.2. Insertar
(Der-Der) el valor
3.2.3. Insertar
(Izq-Der) el valor
ESTRUCTURAS DE DATOS 6
Gracias a que en todo árbol AVL se cumple que , entonces la complejidad
temporal del algoritmo de inserción sería en todo caso.
Es posible que después de una eliminación se requiera corregir con rotaciones más de un
nodo.
Izq-Der
(aunque también Eliminar
se puede aplicar el valor
Izq-Izq)
ESTRUCTURAS DE DATOS 7
Eliminar
Izq-Izq
el valor
Eliminar
el valor
Un árbol perfectamente balanceado es un árbol binario ordenado tal que todos sus nodos
tienen un factor de balanceo por peso entre menos uno y uno, donde el factor de balanceo
por peso de un nodo es el peso de su subárbol derecho menos el peso de su subárbol
izquierdo:
4. ÁRBOLES ROJI-NEGROS
Los árboles Roji-negros son otro tipo de árboles ordenados balanceados que proveen
complejidades logarítmicas para las operaciones básicas de búsqueda, inserción,
eliminación y modificación.
Un árbol Roji-negro (conocido en inglés como Red-black tree) es un árbol binario que cumple
las siguientes propiedades:
1. Es un árbol ordenado.
ESTRUCTURAS DE DATOS 8
2. Todos sus nodos están coloreados de rojo o de color negro (el color es un atributo de los
nodos de un árbol Roji-negro, que sólo puede tomar dos posibles valores: rojo o negro).
3. Su raíz está coloreada de negro.
4. Todos sus subárboles vacíos están coloreados de negro y son considerados como nodos del
árbol cuyo valor almacenado es null.
5. Todos los hijos de un nodo coloreado de rojo deben estar coloreados de negro.
6. Todos los caminos que parten de un nodo y llegan a un subárbol vacío deben pasar por la
misma cantidad de nodos coloreados de negro.
Muchos textos usan el término hoja en vez de subárbol vacío en la definición. Preferiremos
designar los nodos terminales con el término subárbol vacío para ser coherentes con la
terminología que hemos estado empleando en toda la teoría, trataremos los subárboles
vacíos como nodos, y permitiremos colocar el subárbol vacío en los caminos de nodos.
Suponga en los ejemplos que el árbol vacío ya está coloreado de negro por defecto.
Las restricciones de la definición obligan a que en un árbol Roji-negro, la longitud del camino
más largo que va de la raíz hacia cualquier subárbol vacío no sea mayor que el doble de la
longitud del camino más corto que va de la misma raíz a cualquier otro subárbol vacío. La
razón es la siguiente: debido a que todos los caminos desde la raíz hacia cualquier subárbol
vacío tienen la misma cantidad de nodos negros y que no puede haber ningún camino con
dos nodos rojos consecutivos, entonces el camino más corto posible estaría compuesto
únicamente por nodos negros (negro-negro-…-negro) y el camino más largo posible estaría
compuesto por nodos negros y nodos rojos de forma alternada (negro-rojo-negro-…-
rojo-negro).
Sí. Observe que todos los caminos que van desde el hasta
un subárbol vacío pasan por exactamente cuatro nodos
negros (incluyendo el vacío).
ESTRUCTURAS DE DATOS 9
Todo árbol Roji-negro cumple que , donde es el peso y es la altura del
árbol. Se tiene entonces que los árboles AVL están más estrictamente balanceados que los
árboles Roji-negros porque la altura de todo árbol AVL está acotada por .
EN RESUMEN
Un árbol AVL es un árbol binario ordenado tal que todos sus nodos tienen un factor de balanceo por
altura entre menos uno y uno. Un árbol perfectamente balanceado es un árbol binario ordenado tal
que todos sus nodos tienen un factor de balanceo por peso entre menos uno y uno.
Los árboles AVL, los árboles perfectamente balanceados y los árboles Roji-negros son estructuras de
datos que permiten buscar, insertar, eliminar y modificar datos con complejidad logarítmica
( ).
ESTRUCTURAS DE DATOS 10