ALGORITMI 1 Prof.ssa Petreschi Prof. Silvestri Dott.ssa Calamoneri

Prof.ssa Petreschi
ALGORITMI 1
Prof. Silvestri Dott.ssa Calamoneri
12/06/2006
ESERCIZIO 1
Si consideri il seguente programma THeight() che preso in input un albero rappresentato tramite
vettore dei padri T (con nodi numerati da 0 a n - 1), calcola l'altezza dell'albero.
int THeight(int T[], int n)
{
int i, j, h, height = 0;
for (i = 0 ; i < n ; i++) {
h = 0;
j = i;
while (T[j] != -1) {
j = T[j];
h++;
}
if (h > height) height = h;
}
return height;
}
Discutere la complessità, nel caso peggiore, in funzione di n. In particolare, valutare la complessità
nei seguenti due casi: (1) T rappresenta un albero binario completo; (2) T rappresenta un albero
costituito da un cammino di n nodi.
ESERCIZIO 2
Scrivere in C una funzione che prende in input un grafo non diretto rappresentato tramite matrice
di adiacenza e ritorna 1 se esistono due nodi adiacenti con lo stesso grado e 0 altrimenti. Valutare
la complessità.
ESERCIZIO 3
Descrivere un algoritmo che preso in input un albero binario di ricerca T con n chiavi produce un
albero binario di ricerca B con le stesse chiavi di T e di altezza non superiore a ⎡log(n + 1)⎤.
L'algoritmo deve avere complessità O(n).