ok grazie a questo punto posto il codice nell'ordine in cui lo legge il debug...
allora sono un pollo, ho trovato il bandolo della matassa, mentre riscrivevo qui il codice mi sono accorto cosa mancava!! Comunque a scopo informativo lo riporto comunque!
main:
codice:
import java.util.*;
public class TestAlberiLF {
public static void main(String[] args){
AlberoLF<Integer> tree=new AlberoLF<Integer>();
NodoLF<Integer> root=tree.addRoot(9);
classe AlberoLF<T>
codice:
public class AlberoLF<T> {
private NodoLF<T> root;
[.....]
//Metodo addRoot, aggiunge il valore data di tipo T ad un nuovo oggetto ti tipo Nodo
public NodoLF<T> addRoot(T data){
NodoLF<T> tmp=new NodoLF<T>(data);
addNode(null,tmp);
return tmp;
}
//Metodo addNode, aggiunge alla coda di un nodo preesistente (o null in questo caso
public NodoLF<T> addNode(NodoLF<T> nodoOld, NodoLF<T> nodoNew){
if (nodoOld==null)//mancava questo
nodoOld=new NodoLF<T>();//e questo
nodoNew.setGenitore(nodoOld);
if(nodoOld.getPrimoFiglio()==null){
nodoOld.setPrimoFiglio(nodoNew);
return nodoNew;
}
else
nodoOld=nodoOld.getPrimoFiglio();
while (nodoOld.getProssimoParente()!=null){
nodoOld=nodoOld.getProssimoParente();
}
nodoOld.setProssimoParente(nodoNew);
return nodoNew;
}
//setGenitore, passando al metodo un nodo il metodo lo collega ad un nodo precedente
public void setGenitore(NodoLF<T> nodo){
this.genitore=nodo;
}