Cómo se balancean AVL y árboles rojo-negro
Un árbol balanceado limita su altura mediante rotaciones. AVL y rojo-negro mantienen garantías logarítmicas con distintas reglas y costos de actualización.
Para este tema conviene tener claro:Árboles binarios de búsqueda
Insertar claves ordenadas puede convertir un árbol de búsqueda en una lista. Para impedirlo, los árboles balanceados detectan ramas demasiado desparejas y reorganizan enlaces sin romper el orden de las claves.
Qué significa balancear, exactamente
Balancear no significa que todos los niveles estén completos. Significa imponer reglas que mantengan la altura en . Entonces buscar, insertar y borrar conservan su garantía logarítmica incluso para secuencias de entrada adversas.
La reorganización debe preservar la invariante del ABB. No se cambian claves arbitrariamente: se cambia qué nodo ocupa la raíz local y cómo se conectan sus subárboles.
Antes de seguir, predecí
La rotación, el único movimiento que hay
Una rotación derecha eleva al hijo izquierdo y baja la raíz hacia la derecha. Una rotación izquierda hace el movimiento simétrico. Ambas mantienen el recorrido inorden, por lo que conservan el conjunto de claves ordenado.
Cuando el desequilibrio forma un zigzag hacen falta dos rotaciones: primero se endereza el hijo y después se rota la raíz. Cada rotación toca una cantidad constante de enlaces y cuesta .
Insertamos 10. Un solo nodo, altura 0.
AVL: el factor de balance
Un AVL guarda o calcula el factor de balance de cada nodo:
Exige que ese factor sea , o . Después de insertar o borrar, recorre el camino hacia la raíz, actualiza alturas y rota donde la regla se rompe. Su balance estricto produce búsquedas muy predecibles, a cambio de más ajustes durante modificaciones.
Rojo-negro: un bit de color
Un árbol rojo-negro agrega un bit conceptual de color. Entre otras reglas, la raíz es negra, un nodo rojo no tiene hijo rojo y todos los caminos desde un nodo hasta hojas vacías contienen la misma cantidad de nodos negros.
Estas propiedades permiten caminos de longitudes distintas, pero garantizan que el más largo no supere el doble del más corto. La altura sigue siendo . Inserciones y borrados reparan colores y, cuando hace falta, aplican rotaciones.
Cuál de los dos, y por qué carga
AVL mantiene una forma más rígida y suele favorecer cargas con muchas búsquedas. Rojo-negro acepta algo más de desnivel y suele requerir menos rotaciones en cargas con muchas escrituras.
No es una ley universal de rendimiento: caché, implementación y patrón de claves también importan. Las bibliotecas suelen elegir rojo-negro para mapas y conjuntos ordenados porque ofrece buenas garantías con actualizaciones moderadas.
Cuál de todos, en la práctica
| AVL | Rojo-negro | Árbol B+ | |
|---|---|---|---|
| Qué tan balanceado | muy: alturas difieren en 1 | menos: una rama puede ser el doble | perfecto por construcción |
| Altura típica | ≈ 1,44 log n | ≈ 2 log n | 3 o 4 niveles con millones |
| Búsquedas | más rápidas | un poco más lentas | las mejores en disco |
| Inserciones y borrados | más rotaciones | menos rotaciones | divisiones de página |
| Dónde se usa | cuando se lee mucho más de lo que se escribe | bibliotecas estándar, planificadores | bases de datos, sistemas de archivos |
Más a fondo · nivel seniorLos que aparecieron después, y por qué
Las estructuras nuevas de las últimas décadas no balancean mejor: cambian qué optimizan.
Un treap o una skip list consiguen esperado usando azar en vez de reglas, y a cambio el código es mucho más corto y más fácil de hacer concurrente. Redis usa skip lists para sus conjuntos ordenados por eso, no por velocidad.
Un splay tree no mantiene ninguna garantía por operación y mueve lo último consultado a la raíz, así que es rapidísimo cuando los accesos se repiten. Es la estructura correcta para una caché y la equivocada para un sistema con requisitos de latencia.
Y un árbol LSM —el que hay debajo de LevelDB, RocksDB y Cassandra— renuncia a tener una sola estructura ordenada: escribe en memoria y vuelca a disco archivos ordenados que después fusiona. Hace las escrituras muchísimo más baratas y las lecturas un poco más caras, que es exactamente el canje que pide un sistema que recibe más de lo que consulta.
El patrón es el mismo en los cuatro: el árbol balanceado clásico es el punto de equilibrio, y cada variante se corre hacia un lado sabiendo qué está resignando.
Cierre
Las rotaciones reparan la forma sin alterar el orden. AVL controla diferencias de altura; rojo-negro controla colores y cantidad de nodos negros. Las reglas son distintas, pero el objetivo es el mismo: impedir que la altura crezca linealmente.
Autoevaluación
¿Lo entendiste?
Práctica