Lo tengo implementando pero sé que hay un detalle por ahí, puesto que me arroja NULLPOINTER EXCEPTION cuando lo llamo desde mi case.
Acá les dejo el método BORRARNODOHOJA
Código:
boolean borrarNodoHoja(NodoBinario nodo)
{
boolean se_borro = false;
NodoBinario nodo_padre = nodo.getPadre();
if(nodo_padre.getDerecho() == nodo)
{
nodo_padre.setDerecho(null);
} else
{
nodo_padre.setIzquierdo(null);
}
nodo= null;
se_borro = true;
return se_borro;
}
Acá mi clase NOBODINARIO.JAVA
Código:
import javax.swing.*;
public class NodoBinario
{
public int dato;
public NodoBinario izdo;
public NodoBinario dcho;
private Object informacion;
private NodoBinario padre;
public NodoBinario(int t)
{
this.dato=t;
this.izdo=null;
this.dcho=null;
}
//MODIFICACIONES **********************************************************
public NodoBinario(Object informacion)
{
this.informacion = informacion;
this.izdo = null;
this.dcho = null;
}
public NodoBinario getDerecho()
{
return dcho;
}
public NodoBinario getIzquierdo()
{
return izdo;
}
public Object getInformacion()
{
return informacion;
}
public NodoBinario getPadre()
{
return padre;
}
public void setDerecho(NodoBinario derecho)
{
this.dcho = derecho;
}
public void setIzquierdo(NodoBinario izquierdo)
{
this.izdo = izquierdo;
}
public void setInformacion(Object informacion)
{
this.informacion = informacion;
}
public void setPadre(NodoBinario padre)
{
this.padre = padre;
}
//MODIFICACIONES **********************************************************
/*public NodoBinario(NodoBinario ramaIzdo,int t,NodoBinario ramaDcho)
{
dato=t;
izdo=ramaIzdo;
dcho=ramaDcho;
}*/
public int valorNodo() // Otorga el contenido del nodo, la información contenida en él
{
return dato;
}
public NodoBinario subarbolIzdo()
{
return izdo;
}
public NodoBinario subarbolDcho()
{
return dcho;
}
public void nuevoValor(int d)
{
dato=d;
}
public void ramaIzdo(NodoBinario n)
{
izdo=n;
}
public void ramaDcho(NodoBinario n)
{
dcho=n;
}
public void visitar()
{
JOptionPane.showMessageDialog(null, "El Nodo es: " + dato+"\t");
}
}
Acá el case en mi MAIN que llama al método.
Código:
case 10:
arbol.borrarNodoHoja(arbol.raizArbol());
salida="NODO HOJA BORRADO EXITOSAMENTE";
asalida.setText(salida);
JOptionPane.showMessageDialog(null, asalida, "BORRAR NODO HOJA", JOptionPane.WARNING_MESSAGE);
break;
Agradecido de antemano!