salve, ho un problema con questo codice:
codice:
public void inserimento (NodoPFFS<T> New1, NodoPFFS<T> temp1){
NodoPFFS<T> vuoto = new NodoPFFS<T>();
vuoto.setFrat(null);
temp1.addFigl(New1);
temp1=temp1.getFigl();
while(temp1.SiFra()==true)
temp1=temp1.getFrat();
temp1.setFrat(New1);
System.out.println("Elemento"+New1.getEl()+"inserito con successo");
}
precisamente dentro il while, mi da nullpointer exception,
nn riesco a capire perchè, visto che il metodo siFra dovrebbe funzionare:
codice:
public boolean SiFra(){
if(fratello==null)
return(false);
else
return(true);
}
posto anche tutto il codice delle due classi:
codice:
import java.util.*;
public class NodoPFFS<T> {
private T ele;
LinkedList<NodoPFFS<T>> figli = new LinkedList<NodoPFFS<T>>();
private NodoPFFS<T> fratello;
public NodoPFFS(){
ele=null;
}
public void setEl(T e){
ele=e;
}
public T getEl(){
return ele;
}
public void setFrat(NodoPFFS<T> fra){
fratello=fra;
}
public void addFigl(NodoPFFS<T> fig){
figli.addLast(fig);
}
public NodoPFFS<T> getFrat(){
return fratello;
}
public NodoPFFS<T> getFigl(){
return figli.getFirst();
}
public boolean SiFra(NodoPFFS<T> x){
if(x.getFrat()==null)
return(false);
else
return(true);
}
}
e AlberoPFFS
codice:
import java.util.*;
public class AlberoPFFS<T> {
public NodoPFFS<T> nodo,radice;
private int numNodi;
public AlberoPFFS(){
numNodi=0;
radice=new NodoPFFS<T>();
}
public void insRadice(T x){
numNodi++;
radice.setEl(x);
radice.setFrat(null);
radice.addFigl(null);
}
public void inserimento (NodoPFFS<T> New1, NodoPFFS<T> temp1){
NodoPFFS<T> vuoto = new NodoPFFS<T>();
vuoto.setFrat(null);
temp1.addFigl(New1);
temp1=temp1.getFigl();
while(temp1.SiFra()==true)
temp1=temp1.getFrat();
temp1.setFrat(New1);
System.out.println("Elemento"+New1.getEl()+"inserito con successo");
}
public NodoPFFS<T> scorri(NodoPFFS<T> temp1,LinkedList<NodoPFFS<T>> padri1){
NodoPFFS<T> vuoto = new NodoPFFS<T>();
if(temp1.getFigl()!=vuoto.getFrat())
{padri1.addFirst(temp1);
temp1=temp1.getFigl();
return(temp1);}
if(temp1.getFrat()!=vuoto.getFrat())
{temp1=temp1.getFrat();
return(temp1);}
else
temp1=padri1.getFirst().getFrat();
return(temp1);
}
public void insNodo (T x , T pad){
numNodi++;
int c=1;
LinkedList<NodoPFFS<T>> padri= new LinkedList<NodoPFFS<T>>();
NodoPFFS<T> temp=radice;
NodoPFFS<T> New= new NodoPFFS<T>();
New.setEl(x);
while(c==1){
if(temp.getEl()==pad){
inserimento(New,temp);
c=0;}
else{
temp=scorri(temp,padri);
}
}
}
public void stampa(){
NodoPFFS<T> vuoto = new NodoPFFS<T>();
int c=1;
LinkedList<NodoPFFS<T>> padri= new LinkedList<NodoPFFS<T>>();
NodoPFFS<T> temp=radice;
while(c==1){
while(temp.getFigl()!=vuoto.getFrat()){
padri.addFirst(temp);
temp=temp.getFigl();
}
System.out.println(temp.getEl());
if(temp.getFrat()!=vuoto.getFrat())
temp=temp.getFrat();
else{
temp=padri.getFirst().getFrat();;
}
if (padri.isEmpty())
c=0;
}
}
}
il mio problema è quello di riuscire a capire se l'attributo Fratello della classe NodoPFFS è vuoto o no. Nell'attributo Fratello si salva il puntatore al nodo successico, ma non posso confrontare un puntatore a null. Con cosa lo devo confrontare?
spero che qualcuno mi possa aiutare;
grazie