salve a tutti!
Vorrei gentilmente chiedervi se sapete dirmi cosa c'è di sbagliato nel metodo che ho allegato sotto.
il metodo children restituisce una collezione iterabile dei figli del nodo passato cm argomento.
Il metodo depth restituisce la profondità di un nodo.
il metodo positions() restituisce un iteratore delle posizioni ossia Iterable<Position<E>>.
Il compilatore mi dice che il metodo dovrebbe restituire un Iterable<Position<E>> ma è proprio cio' che restituisco..
Rigrazio tutti anticipatamente!
: /*Prende in input un albero T e un intero i e restituisce una collezione iterabile di tutti i nodi a profondità i*/
public static<E> Iterable<Position<E>> atDepth(BinaryTree<E> T, int k)
{
int depth=0;
LinkedTree<E> t= (LinkedTree<E> ) T;
PositionList<E> children= new NodePositionList<E>();
if (k==0)
children.addLast(T.root().element());
else
{
PositionList<Position<E>> parent= new NodePositionList<Position<E>>();
for (Position<E> pos: T.children(T.root()))
children.addLast(pos.element());
while ( (depth=t.depth(children.first())) < k)
{
children=null;
for (Position<E> pos: parent)
children.addLast(pos.element());
for (Position<E> p: parent)
for (Position<E> child: T.children(p))
children.addLast(child.element());
}
return children.positions();
}
}: