Construcción y validación de un Árbol de Búsqueda Binaria en JavaScript
Clase 25 de 29 • Curso de Estructuras de Datos con JavaScript
Resumen
¿Cómo validar la lógica de un Binary Search Tree?
La idea principal detrás de un Binary Search Tree (BST) es que todos los nodos que aumentan deben ir al lado derecho, mientras que los nodos que disminuyen deben ir al lado izquierdo. Es importante recordar esta regla al trabajar con un BST. Si nota algo incorrecto en su árbol, como un nodo no aumentando cuando debería, es crucial identificar y corregir el error para mantener la integridad de la estructura del árbol.
¿Cómo construir un Binary Search Tree en JavaScript?
Para construir un Binary Search Tree efectivo, primero debe definir la clase de nodos y cómo se comportarán cuando se añadan al árbol. A continuación, explorarás el proceso para construir uno usando JavaScript.
Clase de Nodo
Cada nodo en el árbol tendrá:
- Un valor
- Un puntero al hijo izquierdo (
left
) - Un puntero al hijo derecho (
right
)
Aquí está cómo puedes definir la clase en JavaScript:
class Node {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}
Clase del Árbol
Ahora, vamos a construir la clase BinarySearchTree
. Este árbol inicia vacío y los nodos son insertados mediante un método. Aquí está la estructura básica:
class BinarySearchTree {
constructor() {
this.root = null;
}
insert(value) {
const newNode = new Node(value);
if (this.root === null) {
this.root = newNode;
return this;
}
let current = this.root;
while (true) {
if (value < current.value) {
if (current.left === null) {
current.left = newNode;
return this;
}
current = current.left;
} else {
if (current.right === null) {
current.right = newNode;
return this;
}
current = current.right;
}
}
}
}
Método de Inserción
El método insert
sigue estos pasos:
- Crea un nuevo nodo.
- Si el árbol está vacío, el nuevo nodo es el
root
. - Si no está vacío, compara el valor del nuevo nodo con el valor actual.
- Dependiendo del valor, muévase a la izquierda (si es menor) o a la derecha (si es mayor).
- Continúe hasta encontrar una posición adecuada donde un nodo no exista, y establezca el nuevo nodo allí.
Ejemplo de Uso
Supongamos que quiere crear un árbol con los valores 10, 4, y 20:
const tree = new BinarySearchTree();
tree.insert(10);
tree.insert(4);
tree.insert(20);
console.log(tree);
Al final, al verificar su árbol, debería tener una estructura donde 10 es el nodo raíz, 4 está en la izquierda y 20 está en la derecha.
¿Cómo probar el Binary Search Tree?
Copie su código en un entorno como la consola de un navegador para verificar que el árbol se comporta según lo esperado. Asegúrese de que al insertar nodos, la estructura del árbol sigue respetando las reglas del BST: donde cada izquierda es menor y cada derecha es mayor al nodo raíz.
¿Cuál es el siguiente reto?
Con el método insert
completado, un siguiente paso podría ser implementar un método de búsqueda (search
). Esto implicaría:
- Recorrer el árbol hacia abajo, siguiendo las reglas de comparación de los nodos.
- Si encuentra el valor, devolver el nodo.
- Si no, continuar hasta que no queden nodos por explorar.
Desarrollar este método le proporcionará una comprensión más completa de cómo manipular y navegar en un Binary Search Tree. ¡Déjese retar y avance con confianza!
Tome este código como un punto de partida para explorar aún más las posibilidades con Binary Search Trees y continuar mejorando sus habilidades en estructuras de datos.