Arbol Binario

Elena
07 de Diciembre del 2004
Hola, llevo como un mes pensando cómo representar un árbol binario por pantalla y todavía no he sido capaz. No sé si este código tiene sentido o es totamlente imposible, os lo dejo para que le echeis un vistazo, a ver si me podeis ayudar.

private void representar(RamaLista raiz)
{
Dimension tamPanel=padre.getSize();
raiz.setBounds( tamPanel.width/2-10 ,tamPanel.height/10,
150 , 150);
this.add(raiz);
raiz.addMouseListener(new Lista2_mouseAdapter(this));
representarHijos(raiz);
}

private void representarHijos(RamaLista raiz)
{
Point pt=raiz.getLocation(null);
if((raiz==null)||(raiz.seRepresento()==true))
{
return;
}
else
{
if(raiz.izq!=null)
{
raiz.izq.setBounds( (int)(pt.getX()-pt.getX()/2)) ,(int)pt.getY()+100,
150 , 150);
this.add(raiz.izq);
raiz.izq.addMouseListener(new Lista2_mouseAdapter(this));
raiz.representar();
}
if(raiz.der!=null)
{
raiz.der.setBounds( (int)(pt.getX()+(pt.getX()/2)+50), (int)pt.getY()+100,
150 , 150);
this.add(raiz.der);
raiz.der.addMouseListener(new Lista2_mouseAdapter(this));
raiz.representar();
}

this.representarHijos(raiz.izq);
this.representarHijos(raiz.der);
}
}


De todas maneras, me da un NullPointerException en
Point pt=raiz.getLocation(null);
¿Qué puedo hacer?
Un saludo

astur_racing
07 de Diciembre del 2004
Este es mi codigo:

public void print (NodoArbol p, int esp){
if (p != null)
{
print (p.GetDer(),esp + 1);
for (int i = 0; i <= esp; i++)
System.out.print(' ');
p.info.Visualizar();
print (p.GetIzq(),esp + 1);
}
}

Espero que te sirva. Saca el arbol, pero lo saca de lado.