Estructuras de Datos y Algoritmos · Programación

Árboles binarios de búsqueda (BST)

Inserta, busca y recorre en un árbol binario de búsqueda, y analiza cómo el equilibrio afecta al costo de sus operaciones.

Árboles binarios de búsqueda

Diagrama de estructuras de datos: arbol binario, lista enlazada y tabla hash.
Estructuras de datos fundamentales y analisis de complejidad algoritmica.

Mapa conceptual

La promesa que ordena todo Un árbol binario de búsqueda mantiene una promesa simple: todo lo de la izquierda es menor que el nodo, todo lo de la derecha es mayor. Esa invariante convierte una búsqueda en «pregunta y baja por un lado», eliminando mitad a mitad como una búsqueda binaria.

Búsqueda y la idea de mitad a mitad

Para buscar un valor, empiezas en la raíz y comparas: si el valor es menor, vas a la izquierda; si mayor, a la derecha. Cada paso descarta todo el subárbol opuesto. En un árbol de altura h, el coste es O(h); y si está balanceado, h = log n, así que O(log n).

Buscar 15 en un BST balanceado

  1. — Raíz = 8
  2. — Nodo = 12
  3. — Nodo = 16
  4. — Nodo = 15

El peligro: desbalancearse

Si insertas datos ya ordenados (1, 2, 3, 4, …), cada nuevo valor va siempre a la derecha y el árbol se convierte en una LISTA enlazada de altura n. Entonces O(h) pasa a ser O(n): el BST pierde toda su ventaja. De ahí que existan árboles AUTOEQUILIBRADOS (AVL, rojo-negro) que rotan nodos para mantener h ≈ log n.

El equilibrio no es un lujo: es lo que separa O(log n) de O(n). AVL y rojo-negro lo garantizan con rotaciones; un BST a secas no.
OperaciónÁrbol balanceadoÁrbol degenerado (peor caso)
BuscarO(log n)O(n)
InsertarO(log n)O(n)
Mínimo / máximoO(log n)O(n)
Recorrido completoO(n)O(n)

Los tres recorridos

[Coste de búsqueda: logarítmico (balanceado) vs lineal (degenerado)]

Esta actividad interactiva ('Grafico interactivo') requiere el motor completo de Lumbre. El contenido estatico se muestra arriba; para la experiencia interactiva, visita la version online de este objeto.

¿Qué recorrido de un BST visita sus claves en orden creciente?

Insertar siempre valores crecientes en un BST sin equilibrar mantiene la altura en O(log n).

Une cada operación/propiedad del BST con su coste o resultado (árbol balanceado).

Errores frecuentes

Ejemplo resuelto

  1. Inserta 8, 3, 10, 1, 6 en un BST vacío.
  2. 8 es la raíz. 3 menor → izquierda. 10 mayor → derecha.
  3. 1 menor que 8, a la izquierda; menor que 3, izquierda de 3.
  4. 6 menor que 8 (izquierda), mayor que 3 (derecha de 3).
  5. Árbol con raíz 8, subárbol izquierdo 3→1,6→…, derecho 10. Un in-orden daría 1,3,6,8,10.

Los árboles ordenados son lo que usas cuando necesitas a la vez búsqueda rápida Y mantener el orden: índices de bases de datos (B-trees, generalización de esta idea), «¿cuántas claves hay entre a y b?», o el siguiente valor después de uno dado. El hash no puede con eso; el BST, sí.

El BST en ocho ideas

invariante BST
izquierda nodo derecha
búsqueda
O(h); O(log n) balanceado
degeneración
datos ordenados → altura n
AVL/rojo-negro
autoequilibrados
in-orden
visita ordenado
mínimo
bajar a la izquierda
borrar 2 hijos
sustituir por sucesor
altura
≈ log₂ n balanceado

Árboles (repaso formal)
BST, sus operaciones, recorridos y equilibrio con ejemplos.

Una tabla hash da búsqueda O(1) pero no sabe decir «dame todas las claves entre 100 y 200» ni «la clave siguiente». Explica por qué un BST sí puede y en qué situación elegirías el BST (log n) a pesar de ser «más lento» que el hash (O(1)).

VisuAlgo
Visualizaciones animadas de estructuras de datos y algoritmos.