La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1.Scrivere una funzione ricorsiva che, dato un albero binario di ricerca, restituisca gli n nodi più piccoli 2.Scrivere una funzione che, dato un albero.

Presentazioni simili


Presentazione sul tema: "1.Scrivere una funzione ricorsiva che, dato un albero binario di ricerca, restituisca gli n nodi più piccoli 2.Scrivere una funzione che, dato un albero."— Transcript della presentazione:

1 1.Scrivere una funzione ricorsiva che, dato un albero binario di ricerca, restituisca gli n nodi più piccoli 2.Scrivere una funzione che, dato un albero binario, verifichi se è un albero binario di ricerca. 3.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 ricorsiva che, dato un albero binario di ricerca, restituisca gli n nodi più piccoli. Pre condizioni: La funzione prende in ingresso un albero binario di ricerca, l'intero n e un puntatore a puntatore a una lista Post condizioni: La funzione inserisce nella lista i primi n nodi più piccoli.

3 Implementazione int primi_n(tree *t, int k, int n, list **l) { /* casi base */ if ((t == NULL)||(k >= n)) return k; k = primi_n(t->sx, k, n, l); if (k < n) { list *nuovo = (list *)malloc(sizeof(list)); nuovo->next = *l; nuovo->dato = t->dato; *l = nuovo; k++; k = primi_n(t->dx, k, n, l); } return k; }

4 Esercizio 2 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.

5 Implementazione int abr_aux(tree *t, int *prec) { int ris; if (t == NULL) 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); }

6 Esercizio 3 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).

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


Scaricare ppt "1.Scrivere una funzione ricorsiva che, dato un albero binario di ricerca, restituisca gli n nodi più piccoli 2.Scrivere una funzione che, dato un albero."

Presentazioni simili


Annunci Google