Salve per esercizio sto cercando di implementare un albero binario,(premessa è la prima volta) ottengo un nullpointerException al metodo di visitaIterativaDfs ,nella classe AlberoBin chi mi aiuta??
codice:
public class NodoBin {
private int dato;
private NodoBin figlioSx;
private NodoBin figlioDx;
NodoBin(int d) {
figlioDx=null; figlioSx=null;
dato=d;
}
public void inserimNodoInterno(int val){
if(val<=dato) {
if(figlioSx!=null)
figlioSx.inserimNodoInterno(val);
else
figlioSx = new NodoBin(val);
}
else{
if(figlioDx!=null)
figlioDx.inserimNodoInterno(val);
else
figlioDx = new NodoBin(val);
}
}
public void stampaNodo( ){
System.out.println("ecco il dato "+dato);
if(figlioSx!=null)
figlioSx.stampaNodo();
if(figlioDx!=null)
figlioDx.stampaNodo();
}
public int getDato() {
return dato;
}
public NodoBin getFiglioDx() {
return figlioDx;
}
public NodoBin getFiglioSx() {
return figlioSx;
}
}
public class AlberoBin {
private NodoBin radice;
private LinkedList<NodoBin> visitatiPILA; //per DFS
public AlberoBin() {
radice=null; visitatiPILA=null;
}
public boolean alberoVuoto(){
if(radice ==null)return true;
return false;
}
public void insNodo(int v){
if( alberoVuoto() )
radice = new NodoBin(v);
else
radice.inserimNodoInterno(v);
}
public void stampaNodi(){
if( alberoVuoto() ) return ;
radice.stampaNodo();
}
public void visitaIterativaDFS(){
visitatiPILA.add(radice);
while(! visitatiPILA.isEmpty()){///////nullPointerException
NodoBin nodoPrelevato= visitatiPILA.pop();
if(nodoPrelevato!= null)
System.out.println( "valutazione del nodo"+ nodoPrelevato.getDato() );
visitatiPILA.push(nodoPrelevato.getFiglioSx());
visitatiPILA.push(nodoPrelevato.getFiglioDx());
}
}
}
public class AvviaAlbero {
public static void main(String[] args) {
AlberoBin A1 =new AlberoBin();
A1.insNodo(1);
A1.insNodo(2);
A1.insNodo(3);
A1.insNodo(4);
A1.visitaIterativaDFS();
}
}