es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy intentando ejecutar una función de devolución de llamada en una entrada de matriz en un árbol de búsqueda binario. Sigo recibiendo el mensaje de error de que mi función de devolución de llamada “no es una función”.

Aquí está mi código para crear el árbol binario de búsqueda, así como un método prototipo para añadir al árbol. También está el método preorden junto con algunas llamadas para ejecutar las funciones y probarlas…

“`javascript
function BinarySearchTree(valor) {
this.valor = valor;
this.derecha = null;
this.izquierda = null;
}

BinarySearchTree.prototype.add = function(valor) {
if (valor < this.valor && this.izquierda) {
this.izquierda.add(valor);
} else if (valor < this.valor) {
this.izquierda = new BinarySearchTree(valor);
}

if (valor > this.valor && this.derecha) {
this.derecha.add(valor);
} else if (valor > this.valor) {
this.derecha = new BinarySearchTree(valor);
}
};

BinarySearchTree.prototype.depthFirstPre = function(callback) {
callback(this.valor);
if (this.izquierda) {
this.izquierda.depthFirstPre(callback);
}
if (this.derecha) {
this.derecha.depthFirstPre(callback);
}
};

var binarySearchTree = new BinarySearchTree(5);
var array = [];
var func = function(valor){ array.push(valor); };
binarySearchTree.add(2);
binarySearchTree.add(3);
binarySearchTree.add(7);
binarySearchTree.add(6);
binarySearchTree.depthFirstPre(func);
console.log(array) -> debería mostrar [ 5, 2, 3, 7, 6 ]

Sigo obteniendo “callback is not a function” cuando intento ejecutar la función depthFirstPre y estoy confundido acerca de por qué.

Gracias por cualquier ayuda, será muy apreciada!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código parece ser que la función de devolución de llamada no se está pasando correctamente como argumento a la función depthFirstPre.

    Al llamar a la función depthFirstPre, la función de devolución de llamada debe ser pasada como argumento de esta manera:

    binarySearchTree.depthFirstPre(func);
    

    Asegúrese de que la función esté definida antes de que se pase como argumento.

    Además, verifique que la función de devolución de llamada esté definida correctamente y que tome un solo argumento. El error “callback is not a function” (“la devolución de llamada no es una función”) generalmente ocurre cuando el argumento pasado no es una función.

    Si las sugerencias anteriores no resuelven el problema, por favor comparta el código completo para que podamos identificar el problema de manera más precisa.

Comments are closed.