Estoy haciendo el código de una función para encontrar un valor pasado por parámetro en un BinarySearchTree pero no me funciona y no sé por qué. Si el precio está dentro del árbol, tengo que devolver verdadero, si el precio pasó. por parámetro es menor o igual a 0 tengo que devolver "error" y si no se encuentra debo devolver falso este es mi código.
BinarySearchTree.prototype.searchPrice = function (price) { if (price <= 0) return "Error" if(this.value === price) return true; if(this.value < price) return this.right.searchPrice(price); if(this.value > price) return this.left.searchPrice(price); if(this.value === null) return false; };El problema podría ser que tiene una verificación null para this.value al final, lo que hace que if(this.value < price) siempre sea true cuando this.value es null
Intente mover la línea if(this.value === null) return false; en la parte superior y ver si funciona
ACTUALIZACIÓN: también debe agregar controles null para this.left y this.right
BinarySearchTree.prototype.searchPrice = function (price) { if (price <= 0) return "Error" // move this line at the top like this if(this.value === null) return false; if(this.value === price) return true; if(this.value < price) { if(!this.right) { return false; } return this.right.searchPrice(price); } if(this.value > price){ if(!this.left) { return false; } return this.left.searchPrice(price); } };