Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Parte Algoritmi
https://forms.office.com/Pages/ResponsePage.aspx?id=K3EXCvNtXUKAjjCd8ope612l9yEARrZBj
hLl1lBueNxUQjJORFlXUllFRExVSzY2U0VFQTkxTE1UQS4u
https://forms.office.com/Pages/ResponsePage.aspx?id=K3EXCvNtXUKAjjCd8ope6xGhEotCVVtK
rA8eYdjna3RUQ1pGMk1HMlpENkkyTzhMVERPMzRIN0NWTS4u
Recuperi
https://forms.office.com/Pages/ResponsePage.aspx?id=K3EXCvNtXUKAjjCd8ope6xGhEotCVVtK
rA8eYdjna3RUMUJWM1JNQVlEVjFTQVJEVVo1TjFVREhVRi4u
Si vuole costruire una tabella di hash a partire dalla seguente sequenza di chiavi:
Si ipotizzi che la dimensione della tabella di hash sia m = 11 e che la funzione di hash da
applicare sia h(k) = k mod 11. Si supponga che i primi 6 valori siano già stati inseriti e che sia
stato ottenuto
Si inseriscano gli ultimi due valori nella posizione corrette ipotizzando che la politica di
risoluzione delle collisioni sia double hashing con h’(k) = 1 + k mod 10
Si riporti l’array finale, specificato nello stesso formato riportato sopra e i calcoli e i passi principali per
risolvere l’esercizio.
SOLUZIONE
4+1=5 OCCUPATA
4+2=6 LIBERA
Si scriva il risultato della visita in ampiezza che si ottiene partendo dal nodo 4
Si scriva il risultato della visita in profondità che si ottiene partendo dal nodo 0
SOLUZIONE
Ampiezza da 4: 4-3-5-2-0 poi l’algoritmo di visita verifica se ci sono nodi non ancora visitati e riprende la
visita da lì; in questo caso troverebbe 1
Profondità da 0: 0-1-3-5-2-4
Nota: l’ordine con cui vengono visitati i nodi è dato dall’ordine delle liste di adiacenza
ESERCIZIO ALBERO
Si consideri un albero binario contenente valori interi positivi. Si scriva una funzione C++ che riceve in
ingresso la radice di un albero binario e un intero k>0 e restituisca il prodotto dei valori che si trovano dal
livello k in poi; se non sono presenti valori al livello k la funzione restituirà 0.
SOLUZIONE
Una possibile soluzione consiste nell’effettuare il prodotto di tutti i valori nei nodi di livello >=k
e di tenere in una variabile l’informazione sul fatto che il livello k è stato raggiunto almeno una
volta. Se non viene raggiunto si restituisce 0.
if (subroot == NULL)
int prodotto;
if (livello>=k)
else prodotto=1;
livello++;
return prodotto;
Un algoritmo proposto da un vostro compagno utilizza un paio di variabili globali per capire se è
stato raggiunto il livello k e la prima volta che si trova un nodo a livello k si pone la variabile
risultato del prodotto pari a 1 (altrimenti è inizializzata a 0):
if (subroot == NULL){
return;
if (l >= k){
if (first){
result += 1;
first = false;