Ti propongo un algoritmo ricorsivo, che è piu semplice, l'ideà è di passare come argomento il valore che rappresenta il livello corrente (currentLevel), oltre al valore che rappresenta il livello da stampare (level); il livello inizio a contarlo dalla radice, cioè la radice ha livello zero; figli della radice hanno livello 1, ecc ecc... Se inizi a contare il livello dalle foglie, l'algoritmo è diverso:
codice:
void printLevel(tree T, int currentLevel, int level){
if(T == NULL)
return;
if(curentLevel == level){
printf("%d\n", T -> elem);
//Se questo nodo è a livello level non c'è bisogno di
//richiamare la procedura sui figli che saranno a
//livello magiore
return;
}
printLevel(T -> left, currentLevel + 1, level);
printLevel(T -> right, currentLevel + 1, level);
}