Binary Search Tree

MediaNo Prioritaria

Árbol binario donde el hijo izquierdo es menor que el padre y el derecho es mayor.

¿Qué es un Binary Search Tree?

Es un árbol binario con una regla especial: todos los valores del subárbol izquierdo de un nodo son menores que el nodo, y todos los del subárbol derecho son mayores.

Esto permite realizar operaciones de búsqueda, inserción y eliminación de forma eficiente si el árbol está balanceado.

Analogía del Mundo Real

Piensa en una agenda telefónica ordenada alfabéticamente. Si buscas un nombre, puedes ir directamente hacia la mitad y decidir si ir hacia arriba o hacia abajo según la letra inicial. Esa eficiencia es justo lo que ofrece un BST.

Cómo Funciona Internamente un BST

  1. Cada nodo tiene como máximo dos hijos: izquierdo y derecho.
  2. Los valores en el hijo izquierdo son menores que el valor del nodo actual.
  3. Los valores en el hijo derecho son mayores.
  4. Esta propiedad se mantiene recursivamente en todos los nodos.
  5. Se puede recorrer el árbol in-order para obtener los valores ordenados.

Ejemplos de Código

// Binary Search Tree in JavaScript
class Node {
  constructor(value) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}

class BST {
  constructor() {
    this.root = null;
  }

  insert(value) {
    const newNode = new Node(value);
    if (!this.root) {
      this.root = newNode;
      return;
    }
    let current = this.root;
    while (true) {
      if (value < current.value) {
        if (!current.left) {
          current.left = newNode;
          return;
        }
        current = current.left;
      } else {
        if (!current.right) {
          current.right = newNode;
          return;
        }
        current = current.right;
      }
    }
  }
}

Explicación Visual (🚧 En progreso)

Pronto disponible

Estamos trabajando en un video para explicar esta estructura de datos

Complejidad en Tiempo y Espacio

OperaciónPromedioPeor Escenario
AccesoO(log n)O(n)
BúsquedaO(log n)O(n)
InserciónO(log n)O(n)
EliminaciónO(log n)O(n)

Donde n es el número de nodos.

En el peor caso (árbol desbalanceado), la complejidad puede degradarse a O(n).

Operaciones Comunes

  • insert(value)
    Agrega un nodo manteniendo la propiedad del BST
  • search(value)
    Verifica si el valor existe en el árbol
  • inOrder(node)
    Recorre los valores en orden ascendente
  • min()
    Obtiene el valor más pequeño
  • max()
    Obtiene el valor más grande

Posts relacionados