Orden del árbol
En este árbol de orden 3: cada nodo tiene como máximo 2 claves y como mínimo 1 (salvo la raíz). Cambiar el orden reconstruye el árbol con las mismas claves.
Cargando aplicación...
Preparando tu experiencia meskeIA
Inserta, busca y elimina claves y observa la división de nodos, el préstamo entre hermanos y la fusión. Es la estructura que usan las bases de datos para indexar millones de registros con la variante B+.
En este árbol de orden 3: cada nodo tiene como máximo 2 claves y como mínimo 1 (salvo la raíz). Cambiar el orden reconstruye el árbol con las mismas claves.
Inserción con división, borrado con fusión e índices de bases de datos
| Característica | BST / AVL | Árbol B | Árbol B+ |
|---|---|---|---|
| Hijos por nodo | Máximo 2 | Hasta m (orden) | Hasta m (orden) |
| Claves por nodo | 1 | Hasta m-1 | Hasta m-1 |
| Dónde están los datos | En todos los nodos | En todos los nodos | Solo en las hojas |
| Altura típica (1M elementos) | ~20 niveles | 3-4 niveles | 3-4 niveles |
| Recorrido por rangos | Inorden (recursivo) | Inorden (recursivo) | Hojas enlazadas (muy eficiente) |
| Pensado para | Datos en memoria RAM | Datos en disco | Índices de bases de datos |
| Dónde se usa | std::map, TreeMap | Sistemas de archivos | PostgreSQL, MySQL, Oracle |
El orden m es el número máximo de hijos de un nodo. Un nodo guarda hasta m-1 claves y, salvo la raíz, al menos ceil(m/2)-1. En este simulador puedes elegir orden 3, 4 o 5 y ver cómo afecta a la anchura y la altura del árbol.
En bases de datos reales el orden es de cientos, para que cada nodo llene una página de disco.
Porque el árbol B nunca crece "hacia abajo" de forma desigual: solo gana altura cuando la raíz se divide, y esa división añade un nivel a todo el árbol a la vez. Así se garantiza que cualquier búsqueda recorre el mismo número de nodos.
Carga el ejemplo “Inserción secuencial 1-10” y observa que el árbol se mantiene equilibrado.
La división (split) ocurre al insertar cuando un nodo se pasa del máximo: la mediana sube al padre. Al borrar puede pasar lo contrario: si un nodo baja del mínimo, primero intenta pedir prestada una clave a un hermano (préstamo); si el hermano tampoco va sobrado, los dos nodos se fusionan en uno.
Inserta hasta provocar divisiones y luego borra para ver préstamos y fusiones en el historial.
Un AVL es binario: con un millón de claves tiene unos 20 niveles, y cada nivel podría ser una lectura de disco. Un árbol B agrupa cientos de claves por nodo, así que el mismo millón cabe en 3 o 4 niveles. Menos niveles equivale a muchísimos menos accesos a disco.
La regla: en RAM importa el número de comparaciones; en disco importa el número de accesos.
Casi siempre que hay un índice de base de datos. En el árbol B+ los datos viven solo en las hojas, que además están enlazadas como una lista; esto hace que las consultas por rango y los recorridos ordenados sean muy rápidos. El árbol B clásico es más sencillo y didáctico, y es el que simula esta herramienta.
Este simulador implementa el árbol B clásico; la tabla de arriba resume las diferencias con B+.
Sí. Al igual que en un árbol binario de búsqueda, recorrer un árbol B en inorden (alternando hijos y claves de izquierda a derecha) produce todas las claves en orden creciente. Es lo que ves en el panel “Recorrido inorden”.
Por eso un índice sirve también para acelerar un ORDER BY, no solo las búsquedas exactas.
Desde la raíz, compara la clave nueva con las del nodo y elige el hijo entre dos claves consecutivas. Repite hasta llegar a una hoja: toda inserción empieza en una hoja.
Coloca la clave en su posición ordenada dentro del nodo hoja. Si el nodo sigue dentro del máximo (m-1 claves), has terminado.
Cuando el nodo supera m-1 claves, identifica la clave central (mediana). Reparte el resto en dos nodos: las menores a la izquierda y las mayores a la derecha.
La clave central asciende al nodo padre como separador entre los dos nodos nuevos. Si el padre también se desborda, repite la división hacia arriba.
Cuando la división llega a la raíz, se crea una raíz nueva con la mediana y dos hijos. Es el único momento en que el árbol B aumenta su altura, y lo hace de forma equilibrada.
Carga un ejemplo y cambia el orden de 3 a 5: verás que el árbol se vuelve más ancho y más bajo. Es la intuición clave de por qué en disco se usan órdenes altos.
Cada nodo se diseña para llenar una página (4 KB). Por eso interesa meter muchas claves por nodo: una lectura de disco trae cientos de claves de golpe.
Inserta claves hasta que se divida la raíz y después elimina algunas: observarás préstamos entre hermanos y fusiones en el historial de operaciones.
Salvo la raíz, ningún nodo puede bajar de ceil(m/2)-1 claves. Esa cota inferior es lo que mantiene el árbol "lleno" y evita que degenere.
Si tu consulta es "entre X e Y" o un ORDER BY, el árbol B+ con hojas enlazadas es la opción correcta. El árbol B clásico es mejor para entender el mecanismo base.
La altura de un árbol B es del orden de log base m de n. Subir el orden m reduce la altura mucho más rápido que en un árbol binario.