Estructuras de Datos: Árboles Binarios y Búsqueda en JavaScript

Clase 24 de 29Curso de Estructuras de Datos con JavaScript

Resumen

Domina la estructura de datos árboles con reglas claras y casos prácticos. Aquí verás qué es un tree, cómo identificar un binary tree balanceado y por qué un binary search tree permite búsquedas rápidas, además de los métodos clave para implementarlo en JavaScript.

¿Qué es un tree y cómo se organiza?

Un tree es una estructura jerárquica que ramifica datos, similar al DOM. Todo parte de un nodo principal o root, desde el cual se conectan padres, hijos y hojas. Esta anatomía define cómo se navega y manipula la información.

  • Root: nodo principal desde el que inicia la ramificación. Ejemplo: 1 como root.
  • Parents: nodos con descendientes. Ejemplo: 1 y 3 son parents porque de ellos salen ramas.
  • Hijos: nodos descendientes directos. Ejemplo: 2, 6, 7, 4 y también 3, porque desciende del root 1.
  • Hojas: nodos finales sin hijos. Ejemplo: 2, 4, 6 y 7.
  • Hermanos: nodos con el mismo padre. Ejemplo: 2, 3, 4, 6 y 7.
  • Subtrees: árboles contenidos dentro de un árbol mayor. Ejemplo: el subtree que parte del 3 incluye 6 y 7.

¿Qué define un binary tree y cuándo está balanceado?

Un binary tree bien formado ramifica con hasta dos hijos por nodo. En uno “perfecto”, cada nivel duplica la cantidad de nodos del nivel anterior: si arriba hay 1, abajo debe haber 2; luego 4; y así sucesivamente. Un árbol se considera balanceado cuando hay la misma cantidad de nodos a izquierda y a derecha.

  • Patrón de multiplicación: 1 → 2 → 4 → … en niveles sucesivos.
  • Balance: cantidad equivalente de nodos en ambos lados.
  • No balanceado: cuando los nodos “se cargan” hacia un solo lado y no respetan el crecimiento simétrico. Existen algoritmos para balancear, útiles cuando necesitas búsquedas eficientes.

¿Cómo funciona un binary search tree para buscar rápido?

El binary search tree organiza los datos con una regla simple: los números que decrecen van a la izquierda; los que crecen, a la derecha. Esta regla se aplica en toda la ramificación y habilita la técnica de divide y vencerás para descartar rápidamente mitades del árbol durante una búsqueda.

  • Regla de orden: izquierda < nodo < derecha en cada nivel.
  • Ejemplo a la derecha: 101 es menor que 105 y 105 es menor que 144.
  • Ejemplo a la izquierda: 101 es mayor que 33 y 33 es mayor que 9.
  • Ventaja: comparas si el valor buscado es mayor o menor que el nodo actual; con eso “cortas” la mitad que no sirve y evitas búsquedas en vano.

Además, trabajarás esta estructura con una clase en JavaScript y tres métodos esenciales:

  • search: buscar un valor de forma eficiente.
  • insert: agregar nodos para hacer crecer el árbol.
  • delete: eliminar nodos existentes cuando sea necesario.

¿Te gustaría ver cómo insertar y buscar datos en tu propio binary search tree o tienes dudas sobre la regla izquierda/derecha? Deja tu pregunta en comentarios.