Salve a tutti ragazzi, sono nuova e piuttosto disperata per una consegna che ho a breve :cry:
Devo implementare un albero n-ario in Java con vari metodi, ma sto avendo diversi problemi. Vi riporto i metodi incriminati:
Quando nel metodo main provo ad inserire la radice e i nodi nell'albero viene sollevata un'eccezione di puntatore nullo, controllando il debugger ho scoperto che quando inserisco un nuovo nodo quello vecchio non viene salvato come padre.
Sto impazzendo, non capisco dove sia l'errore, se ci fosse qualcuno disposto ad aiutarmi sarei molto felice! Grazie in anticipo :love:
Devo implementare un albero n-ario in Java con vari metodi, ma sto avendo diversi problemi. Vi riporto i metodi incriminati:
Java:
//Classe del nodo
public class Nodo_m_ario {
public Nodo_m_ario padre;
public List<Nodo_m_ario> figli = new ArrayList<Nodo_m_ario>(maxNrFigli);
public String info;
public static int maxNrFigli;
public Nodo_m_ario (String info) {
this.info=info;
figli = new ArrayList<Nodo_m_ario>(maxNrFigli);
}
public Nodo_m_ario() {
}
public void aggiungiFiglio(int posizione, Nodo_m_ario figlio) {
if(this.figli.size()>=maxNrFigli) {
System.out.println("Impossibile aggiungere nodo");
} else {
figlio.padre=this;
this.figli.add(figlio);
}
}
//Classe dell'albero:
public class Albero_m_ario extends Nodo_m_ario {
public Nodo_m_ario radice;
public Albero_m_ario(int arietà) {
super();
Nodo_m_ario.maxNrFigli = arietà;
}
//Inserire la radice di cui è nota l'informazione che essa conterrà.
public void impostaRadice(String info) {
radice = new Nodo_m_ario(info);
radice.padre = null;
radice.figli = new ArrayList<Nodo_m_ario>(Nodo_m_ario.maxNrFigli);
}
//Inserire un nuovo nodo V come figlio i-esimo di un nodo U, già presente nell'albero.
public void aggiungiNodoV(Nodo_m_ario u, String info, int i) {
Nodo_m_ario child = new Nodo_m_ario(info);
u.aggiungiFiglio(i, child);
}
//Inserire una nuova radice in un albero non vuoto in modo che la vecchia radice sia figlia i-esima della nuova.
public void cambiaRadice(Nodo_m_ario nuovaRadice, int i) {
Nodo_m_ario vecchiaRadice = this.radice;
nuovaRadice.figli = null;
nuovaRadice.figli.set(i, vecchiaRadice);
vecchiaRadice.padre = nuovaRadice;
this.radice = nuovaRadice;
}
Quando nel metodo main provo ad inserire la radice e i nodi nell'albero viene sollevata un'eccezione di puntatore nullo, controllando il debugger ho scoperto che quando inserisco un nuovo nodo quello vecchio non viene salvato come padre.
Sto impazzendo, non capisco dove sia l'errore, se ci fosse qualcuno disposto ad aiutarmi sarei molto felice! Grazie in anticipo :love:
Ultima modifica: