AYUDA JAVA POR FAVOR.

Iniciado por [Black Vomit], 11 Julio 2010, 00:38 AM

0 Miembros y 1 Visitante están viendo este tema.

[Black Vomit]

Saludos! bueno tengo un pequeño problema.  Estoy implementando un programa con menú, el cuál llama a diversos métodos que operan en un árbol binario en JAVA.   He implementando varios, sin embargo, me complica sólo uno, el Borrar Hoja.

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
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

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.
                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!

@synthesize

¿Tanto cuesta postear en el subforo de Java?

[Black Vomit]

Cita de: Daemon Freedom en 11 Julio 2010, 00:45 AM
¿Tanto cuesta postear en el subforo de Java?

Disculpa, no había notado el subforo. 

Blitzkrieg'

Cita de: Daemon Freedom en 11 Julio 2010, 00:45 AM
¿Tanto cuesta postear en el subforo de Java?

Yo creo que no lo ven, deben ponerlo afuera de Programación General.



[Black Vomit]

Cita de: ddk en 11 Julio 2010, 00:45 AM
Cita de: Daemon Freedom en 11 Julio 2010, 00:45 AM
¿Tanto cuesta postear en el subforo de Java?

Yo creo que no lo ven, deben ponerlo afuera de Programación General.

Claro, acabo de registrarme, hace rato conozco la web pero no había tenido intenciones de participar, además de intentar que alguien me sugiera alguna solución a la problemática que plantié.  Sigo intentándolo de todas formas, jeje.


Leyer


tragantras

yo de ti comprobaría que la referencia al padre no es nula antes de pedirle ningun método o recibiras un nullpointerexception de regalo cuando invoques ese método sobre el nodo raiz.

Código (java) [Seleccionar]
boolean borrarNodoHoja(NodoBinario nodo)
    {  
    boolean se_borro = false;  
    NodoBinario nodo_padre  = nodo.getPadre();
/*---------------------------------------------------------------*/
       if(nodo_padre==null) return false;
/*---------------------------------------------------------------------*/  
    if(nodo_padre.getDerecho() == nodo)
    {  
    nodo_padre.setDerecho(null);  
       } else
       {  
        nodo_padre.setIzquierdo(null);
       }
            nodo= null;  
            se_borro = true;
    return se_borro;  
    }  
Colaboraciones:
1 2