PDA

View Full Version : Costruzione alberi n-ari in java


morin91
19-02-2011, 09:26
Qualcuno saprebbe aiutarmi a costruire un albero n-ario su questa base di albero binario??public class Albero
{
private String contenuto;
private Albero sinistro;
private Albero destro;
private boolean alberoVuoto;
public Albero()
{
this.alberoVuoto=true;
}
public Albero(Albero sinistro, String contenuto, Albero destro)
{
this.sinistro=sinistro;
this.contenuto=contenuto;
this.destro=destro;
this.alberoVuoto=false;
}
public String preOrder()
{
String ret="";
if(this.alberoVuoto==true)
return ret;
else
{
ret=ret+contenuto;
ret=ret+this.sinistro.preOrder();
ret=ret+this.destro.preOrder();
return ret;
}

}
public String inOrder()
{
String ret="";
if(this.alberoVuoto==true)
return ret;
else
{
ret=ret+this.sinistro.inOrder();
ret=ret+contenuto;
ret=ret+this.destro.inOrder();
return ret;
}
}
public String postOrder()
{
String ret="";
if(this.alberoVuoto==true)
return ret;
else
{
ret=ret+this.sinistro.postOrder();
ret=ret+this.destro.postOrder();
ret=ret+contenuto;
return ret;
}
}
public void add(Albero a, Albero b)
{
this.sinistro=a;
this.destro=b;
this.alberoVuoto=false;
}
public String visitaAlbero()
{
return this.contenuto;
}
public void svuotaAlbero()
{
this.contenuto="";
}
public void eliminaAlbero()
{
this.sinistro=null;
this.contenuto=null;
this.destro=null;
this.alberoVuoto=true;
}
}

clockover
19-02-2011, 14:35
Ti consiglio di ricrearti una classe Albero e una classe Nodo!
La classe albero contiene un riferimento alla radice dell'albero, che poi è un Nodo! La classe Nodo invece contiene, oltre all'elemento contenuto dal nodo (nel tuo caso una stringa), una lista di Nodi, che poi sono i suoi figli!

Sulla base del tuo albero non puoi costruirti un albero ennario dato che hai solamente due riferimenti!

goldorak
19-02-2011, 18:37
Sulla base del tuo albero non puoi costruirti un albero ennario dato che hai solamente due riferimenti!


Basta usare una rappresentazione left child right sibling e l'albero n-ario lo puoi esprimere mediante un albero binario.

http://it.wikipedia.org/wiki/Albero_n-ario

morin91
19-02-2011, 19:08
E qualche modo per poterlo fare con array??? perchè poi dovrei costruire un metodo per trasformarlo da n-ario a binario..

morin91
19-02-2011, 19:09
Basta usare una rappresentazione left child right sibling e l'albero n-ario lo puoi esprimere mediante un albero binario.

http://it.wikipedia.org/wiki/Albero_n-ario

E qualche modo per poterlo fare con array??? perchè poi dovrei costruire un metodo per trasformarlo da n-ario a binario..

clockover
20-02-2011, 10:02
Basta usare una rappresentazione left child right sibling e l'albero n-ario lo puoi esprimere mediante un albero binario.

http://it.wikipedia.org/wiki/Albero_n-ario

fico non lo sapevo... anche se preferisco la soluzione con una lista..