Tengo un árbol de búsqueda binario genérico que usa una función de comparación para evaluar qué valor es mayor. Este es mi método de eliminación:
remove(data) { const removeHelper = (node, data) => { if (!node) return null; if (this.#comparator(data, node.data) === 0) { if (!node.left && !node.right) return null; if (!node.left) return node.right; if (!node.right) return node.left; let tmp = node.right; while (!tmp.left) { tmp = tmp.left; } node.data = tmp.data; node.right = removeHelper(node.right, tmp.data); } else if (this.#comparator(data, node.data) === -1) { node.left = removeHelper(node.left, data); return node; } else { node.right = removeHelper(node.right, data); return node; } }; this.root = removeHelper(this.root, data); return data; } Sigo recibiendo el error: TypeError: Cannot read properties of null (reading 'left') en referencia a esta línea: (while (! tmp.left))
¿Cómo se supone que mi método de eliminación no debe leer los tipos de propiedad de nulo si eso es de lo que funciona todo el método?