Hola, qué tal a todos? No puedo resolver un problema que veo bastante básico. No encuentro el rollo así que posteo para ver si me pueden dar una mano.
Las clases objeto que uso son:
BinaryNode,
Key y
Error (es uno propio, no el de java.lang). El código sigue así:
Código:
// Es un método para eliminación de un nodo de un Árbol BB, entra una clave "Key" y un manejo de errores.
public void delete(Key key, Error e) {
// Si el objeto (árbol) está vacío, establece un error y sale.
if (this.isEmpty()) {
e.setCode(7);
System.out.println(e.getMessage());
// Si no está vacío, llama a un método privado que recibe un "BinaryNode" para trabajar con él (ser eliminado).
} else
// El método "search" busca el nodo y trae la referencia.
this.deleteMethod(this.search(this.root, key, e));
}
Hasta acá vamos bien.. el siguiente método recurrente, contiene 4 subcasos, siempre y cuando el nodo que estamos trabajando NO sea nulo (caso de corte). El problema está en solo el siguiente caso:
Código:
// Método privado para eliminar el nodo.
private void deleteMethod(BinaryNode node) {
if (node != null) {
if (node.getLeft() == null && node.getRight() == null) {
// El "BinaryNode" tiene un atributo "Element" contenedor de un objeto. Entonces, aquí lo establezco en nulo, ocasionando un NullPointerException.
node.setElement(null);
// ..el código continúa, aunque no es de importancia.
Si en lugar de establecerlo en null al elemento, hago lo siguiente:
el nodo nunca se elimina.
¿Alguna solución?
Gracias, saludos!!