Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2009, 16:58
gswarlus
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Exclamación Excepción Null o NO ELIMINA

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:
Código:
node = null
el nodo nunca se elimina.

¿Alguna solución?

Gracias, saludos!!