salve, dovrei scrivere un metodo ricorsivo che visita un albero per livelli.
questo è ciò che ho fatto:

private String visitaperLivelli(){// ricorsivo
StringBuilder sb=new StringBuilder():
for(int i=0;i<this.size();i++) sb.append(" "); ***
System.out.println(sb.length());
visitaperLivelli(sb,radice,1);
return sb.toString().trim();
}

private void visitaperLivelli(StringBuilder sb, Nodo<T> radice, int i){
if (radice==null) return;
sb.insert(i,radice.info);
visitaperLivelli(sb,radice.figlioSinistro,2*i);
visitaperLivelli(sb,radice.figlioDestro,(2*i)+1);
}

Innanzitutto è da notare il problema di cui alla riga ***. Il metodo insert mi generava una eccezione se non incremento prima la length.
Potete suggerirmi un modo migliore per risolvere il problema?

Cmq supponiamo di avere un albero la cui visita dovrebbe essere [a bc defg hilm] cioè in ordine alfabetico (perdonatemi la fantasia), il mio output
rispetta i livelli ma non l ordine sinistra-destra,cioè esce qualcosa tipo [a bc efgd ilmh]. Potreste indicarmene il motivo?

Inoltre vorrei chiedervi qualche suggerimento su un algoritmo (se esiste) che non usi come "trucco" l'indice i per inserire il nodo nella stringa.

Grazie