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).