La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1.Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. 2.Scrivere una funzione che, dato un albero binario di.

Presentazioni simili


Presentazione sul tema: "1.Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. 2.Scrivere una funzione che, dato un albero binario di."— Transcript della presentazione:

1 1.Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. 2.Scrivere una funzione che, dato un albero binario di ricerca e un intero i, restituisca il nodo contenente l'i-esimo valore nell'ordine. NOTA: scrivere sempre pre e post condizione di ogni funzione Esercizi su alberi binari di ricerca

2 Esercizio 1 Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. Pre condizioni: La funzione prende in ingresso un albero binario Post condizioni: La funzione restituisce 1 se l'albero binario è di ricerca, 0 altrimenti.

3 Implementazione int abr_aux(tree *t, int *prec) { int ris; if (!t) return 1; ris = abr_aux(t->sx, prec); ris &= *prec val; if (ris) { *prec = t->val; ris &= abr_aux(t->dx, prec); } return ris; } tree *abr(tree *t, int *i) { int prec = INT_MIN; return abr_aux(t, &prec); }

4 Esercizio 2 Scrivere una funzione che, dato un albero binario di ricerca e un intero i, restituisca il nodo contenente l'i-esimo valore nell'ordine. Pre condizioni: La funzione prende in ingresso un albero binario di ricerca e un intero i (passato per riferimento). Supponiamo i >= 1. Post condizioni: La funzione restituisce il nodo contenente l'i-esimo valore nell'ordine se i <= del numero di nodi dell'albero (NULL altrimenti).

5 Implementazione tree *trova(tree *t, int *i) { tree *temp; if (!t) return NULL; temp = trova(t->sx, i); if (*i == 1) temp = t; (*i)--; if (*i >= 1) temp = trova(t->dx, i); return temp; }

6 1.Scrivere una funzione che, dato un grafo rappresentato mediante liste di adiacenza e dato un nodo del grafo v, restituisca il numero di nodi a massima distanza da v. 2.Scrivere una funzione che, dato un grafo rappresentato mediante liste di adiacenza e un cammino rappresentato mediante una lista di nodi, verifichi se il cammino esiste nel grafo fornito in input. NOTA: scrivere sempre pre e post condizione di ogni funzione Esercizi su grafi

7 Esercizio 1 Scrivere una funzione che, dato un grafo rappresentato mediante liste di adiacenza e dato un nodo del grafo v, restituisca il numero di nodi a massima distanza da v. Pre condizioni: La funzione prende in ingresso un grafo e un indice v di un nodo del grafo Post condizioni: La funzione restituisce il numero di nodi aventi distanza massima da v.

8 Implementazione int max_dist(graph *g, int k) { int max_dist = 0; int count; int a; for (a = 0; a < g.N; a++) vis[a] = dist[a] = 0; coda *t = crea_coda(); tail_add(t, k); vis[k] = 1; while(!coda_vuota(t)) { int u = tail_remove(t); list *adj = g->adj_list[u]; while(adj != NULL) { int v = adj->el; if (!vis[v]) { vis[v] = 1; dist[v] = dist[u]+1; tail_add(t, v); if (dist[u] > max_dist) { max_dist = dist[u]; count = 0; } count++; } adj = adj->next; } return count; }

9 Esercizio 2 Scrivere una funzione ricorsiva che, dato un grafo rappresentato mediante liste di adiacenza e un cammino rappresentato mediante una lista di nodi, verifichi se il cammino esiste nel grafo fornito in input. Pre condizioni: La funzione prende in ingresso un grafo e una lista di nodi (ovvero un cammino) Post condizioni: La funzione restituisce 1 se e' possibile percorrere il cammino nel grafo in input, 0 altrimenti..

10 Implementazione int verifica_arco(graph *g, int u, int v) { list *adj = g->adj_list[u]; while(adj) { if (adj->el == v) return 1; adj = adj->next; } return 0; } int verifica(graph *g, list *p) { if (!p || p->next == NULL) return 1; return verifica_arco(g, p->el, p->next->el) && verifica(g, p- >next); }


Scaricare ppt "1.Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. 2.Scrivere una funzione che, dato un albero binario di."

Presentazioni simili


Annunci Google