TI VOGLIO BENE!!!Originariamente inviato da anx721
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); }![]()
![]()
![]()
![]()
Facciamo un ultimo piccolo sforzo?
La complessità sarebbe pari ai nodi di quel livello ma come la scrivo?
T(n) = b + 2T(n-1)
dove b è la stampa del nodo attuale e 2T(n-1) le successive chiamate... però non mi suona bene... :master:
In ogni caso grazie!