¿Cómo se construye exactamente una estructura de datos de árbol en JavaScript?

árbol de funciones () {
this.root = null;
Nodo de función (v, l, r) {
if (((typeof v === ‘number’)) && ((l! = null && l instanceof Tree.Node) || l === null) && ((r! = null && r instanceof Tree.Node) || r === nulo)) {
this.value = v;
this.lChild = l;
this.rChild = r;
}
sino if (((typeof v === ‘number’)) && l === undefined && r === undefined) {
this.value = v;
this.lChild = nulo;
this.rChild = nulo;
}
más
lanzar un nuevo error (‘argumentos de entrada inválidos’);
}
Tree.Node = Node;
}

Tree.prototype.InsertNode = function (value) {
if (tipo de valor === ‘número’)
this.root = this.InsertNodeUtil (value, this.root);
más
lanzar un nuevo error (‘argumentos de entrada inválidos’);
};

Tree.prototype.InsertNodeUtil = función (valor, nodo) {
if (nodo === nulo) {
nodo = nuevo Tree.Node (valor, nulo, nulo);
}
más {
if (node.value> value) {
node.lChild = this.InsertNodeUtil (value, node.lChild);
}
más {
node.rChild = this.InsertNodeUtil (value, node.rChild);
}
}
nodo de retorno;
};

Este es un ejemplo de código de ” Resolución de problemas en estructuras de datos y algoritmos usando JavaScript “. Este libro es fácil de seguir y está escrito para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros en Amazon están abajo:

Algoritmos de estructuras de datos usando JavaScript.

.

Hay idiomas tradicionales para aprender DS y Algo. Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos con C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

6. Resolución de problemas en estructuras de datos y algoritmos con Visual Basic .Net

Es bastante fácil:

raíz var = {
valor: “Merry”,
izquierda: {
valor: “Navidad”,
izquierda: nulo
derecha: nulo
},
Correcto: {
valor: “Árbol”,
izquierda: nulo
derecha: nulo
}
};

Con función transversal:

función walk (árbol, fn) {
si (árbol) {
fn (valor del árbol);
caminar (árbol izquierdo, fn);
caminar (tree.right, fn);
}
}

Usado:

> walk (root, n => console.log (n));
Alegre
Navidad
Árbol

También puede omitir la definición de las propiedades para izquierda y derecha si no habrá nodos allí, el código funcionará de todos modos.

Si desea una solución más “disciplinada”:

Nodo de función (valor, izquierda, derecha) {
this.value = value;
this.left = left;
this.right = right;
}

var root2 = nuevo nodo (“Merry”,
Nodo nuevo (“Navidad”, nulo, nulo),
Nodo nuevo (“Árbol”, nulo, nulo));

walk (root2, n => console.log (n));

El resultado es el mismo y, de nuevo, puede omitir los valores null si lo desea.