Aquí está la función constructora, así como el método 'agregar' ...
function Tree(value) { this.value = value; this.children = []; } Tree.prototype.add = function(...value) { if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { let node = new Tree; node.value = value[i]; this.children[this.children.length] = node; } return; } let node = new Tree; node.value = value; this.children[this.children.length] = node; };Aquí está el método de 'altura' en el que estoy trabajando ...
Tree.prototype.height = function() { let height = 0; if (this.children != null) { if (this.children.length == 0) { return height; } else { for (let i = 0; i < this.children.length; i++) { height = Math.max(height, this.height(this.children[i])); } return depth + 1; } return height; } };No estoy seguro de por qué obtengo "RangeError: se excedió el tamaño máximo de la pila de llamadas" porque el método debería devolver la altura si la longitud de la matriz secundaria es 0.
Aquí están los casos de prueba que estoy usando...
tree = new Tree(); tree.add(5); tree.add(8); var son = tree.children[0]; son.add(1); son.add(4); var daughter = tree.children[0]; daughter.add(10); var grandson = son.children[1]; grandson.add(3); grandson.height() //should return 1 tree.height() //should returnCualquier consejo sobre cómo arreglar mi bucle infinito será muy apreciado. ¡Gracias por tu tiempo!