Binary Search Tree — Guia

Divide et impera: la estrategia que transforma O(n) en O(log n)
Abrir simulacion
Orden parcial → busqueda logaritmica
Que es un BST?

Un Arbol Binario de Busqueda es una estructura jerarquica donde cada decision binaria elimina la mitad del espacio de busqueda: izquierda < nodo < derecha.

Divide y venceras Busqueda O(log n) Estructura recursiva Jerarquia natural

La intuicion profunda

El BST es la pregunta de los 20 preguntas hecha estructura de datos. En cada nodo preguntas "es menor o mayor?" — una decision binaria que descarta exactamente la mitad de las posibilidades. Con 10 preguntas distingues entre 1024 elementos; con 20, entre un millon.

Que observar

  • El camino de busqueda es una secuencia de decisiones.
  • La profundidad = numero de comparaciones.
  • La forma del arbol depende del orden de insercion.
  • Recorrido inorder = elementos ordenados.

La propiedad BST: un invariante recursivo

Para todo nodo N en el arbol:

Todos los valores en el subarbol izquierdo son < N
Todos los valores en el subarbol derecho son > N

Esta propiedad es recursiva: cada subarbol es tambien un BST valido. Si alguna vez se viola, el arbol pierde su poder de busqueda logaritmica.

Verificacion: Un recorrido inorder de un BST valido siempre produce los elementos en orden ascendente.

Complejidad: lo mejor y lo peor

Busqueda (promedio)O(log n)
Busqueda (peor caso)O(n)
InsercionO(h) h = altura
EspacioO(n)

El secreto: la complejidad depende de la altura, no del numero de nodos. Un arbol balanceado tiene h ≈ log(n). Un arbol degenerado tiene h = n. Mismos datos, rendimiento radicalmente diferente.

Recorridos: tres formas de leer el arbol

  • Inorder (izq → nodo → der): elementos ordenados
  • Preorder (nodo → izq → der): raiz primero, util para clonar
  • Postorder (izq → der → nodo): hojas primero, util para eliminar

Propiedad fundamental: Preorder + Inorder (o Postorder + Inorder) reconstruyen unicamente el arbol original. Con uno solo no alcanza.

Esto tiene implicaciones en serializacion: para guardar un BST y reconstruirlo exactamente, necesitas dos recorridos (o preorder solo si conoces la propiedad BST).

Eliminacion: el caso complejo

Tres casos segun el nodo a eliminar:

  1. Hoja: simplemente eliminar
  2. Un hijo: el hijo "sube" a ocupar su lugar
  3. Dos hijos: reemplazar con el sucesor inorder

El sucesor inorder es el menor del subarbol derecho: baja a la derecha una vez, luego todo a la izquierda. Siempre tiene como maximo un hijo, lo que simplifica su eliminacion.

Laboratorio

Experimentos guiados

Cada experimento revela un principio fundamental del BST.

1

El arbol degenerado

Hipotesis: Insertar elementos ordenados produce el peor caso posible, convirtiendo O(log n) en O(n).

  1. Inserta en orden: 1, 2, 3, 4, 5, 6, 7
  2. Dibuja mentalmente la forma resultante
  3. Busca el valor 7 — cuenta los nodos visitados
  4. Reinicia y ahora inserta: 4, 2, 6, 1, 3, 5, 7
  5. Busca el 7 de nuevo — compara las visitas

El primer orden produce una "lista enlazada disfrazada". El segundo aproxima un arbol balanceado. Mismos datos, estructura diferente.

7 pasos vs 3 pasos para encontrar el 7
2

El elemento medio como raiz

Hipotesis: Insertar el elemento medio primero produce arboles mas balanceados que insertar en cualquier otro orden.

  1. Toma la secuencia 1-15 y encuentra el medio: 8
  2. Inserta 8 primero, luego 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15
  3. Observa: cada nivel tiene el doble de nodos que el anterior
  4. Calcula la altura: log2(15) ≈ 4 niveles
  5. Compara con insercion aleatoria — repite 3 veces

Este patron (medio, medio de mitades, etc.) es exactamente lo que hace el algoritmo de construccion de BST balanceado desde array ordenado. Es divide y venceras aplicado a la construccion.

Altura optima garantizada
3

Eliminacion y reestructuracion

Hipotesis: Eliminar la raiz con dos hijos mantiene la propiedad BST pero puede desbalancear el arbol.

  1. Construye un arbol balanceado con: 50, 25, 75, 10, 30, 60, 90
  2. Elimina la raiz (50) — observa quien la reemplaza
  3. El 60 (sucesor inorder) sube. Por que el 60?
  4. Verifica con inorder que sigue ordenado
  5. Elimina el nuevo 60 — observa la cascada

El sucesor inorder es el "siguiente en orden". Eliminaciones repetidas pueden degradar el balance. Por eso existen AVL y Red-Black trees que re-balancean automaticamente.

Alternativa: Tambien puedes usar el predecesor inorder (el mayor del subarbol izquierdo). Ambos mantienen la propiedad BST.

Probar en la simulacion
Conexiones con EigenLab

El BST en otros dominios

La estructura jerarquica de decision aparece en toda la ciencia.

Taxonomia biologica

La clasificacion de especies (Reino → Filo → Clase → Orden → Familia → Genero → Especie) es un arbol de decisiones. Cada bifurcacion pregunta "tiene esta caracteristica?" y divide el espacio de organismos. Linneo invento un BST biologico en 1735.

Simulacion relacionada: Algoritmo Genetico — la seleccion natural "busca" en el espacio de genotipos.

Busqueda binaria: el algoritmo gemelo

La busqueda binaria en un array ordenado es el BST "aplanado". Ambos usan la misma estrategia: comparar con el medio, descartar mitad. El BST permite inserciones dinamicas; el array ordenado tiene mejor localidad de cache.

Conexion: Construir un BST balanceado desde array ordenado es O(n). Pero insertar n elementos uno a uno puede ser O(n log n) o O(n^2).

Diagramas de fase y decisiones

Un diagrama de fases (P-T) divide el espacio en regiones. Preguntar "a esta temperatura y presion, es solido, liquido o gas?" es recorrer un arbol de decisiones implicito sobre las fronteras de fase.

Simulacion relacionada: Diagrama de Fases — las transiciones de fase son "bordes" en el arbol de estados de la materia.

El pendulo doble y la sensibilidad inicial

El orden de insercion en un BST es analogo a las condiciones iniciales en sistemas caoticos. Pequenas diferencias en el orden producen arboles radicalmente diferentes, igual que pequenas diferencias en angulo inicial del pendulo doble.

Simulacion relacionada: Pendulo Doble — sensibilidad a condiciones iniciales.

Limitaciones

Cuando el BST no es la respuesta

Regla practica: El BST basico es educativo. En produccion, casi siempre usaras una variante auto-balanceada (std::map en C++ usa Red-Black).

Conexiones tecnicas

Estructuras que evolucionan del BST

Preguntas para reflexionar

  1. Si tienes un array ordenado, puedes hacer busqueda binaria en O(log n). Entonces, por que molestarse con un BST?
  2. El BST garantiza O(log n) en promedio pero O(n) en peor caso. Por que no siempre usamos AVL que garantiza O(log n) siempre?
  3. Un BST con n nodos tiene altura minima log(n) y maxima n. Cuantos arboles BST distintos puedes formar con los valores {1, 2, 3}?
  4. Si necesitas encontrar el k-esimo elemento mas pequeno repetidamente, como modificarias el BST para hacerlo eficiente?