La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi

Presentazioni simili


Presentazione sul tema: "APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi"— Transcript della presentazione:

1 APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi

2 Alberi Binari: struttura dati
Definizione della struttura dati struct tree_node { int dato; struct tree_node *sx; struct tree_node *dx; }; typedef struct tree_node *Tree;

3 Alberi Binari: struttura dati
Esercizio 1: scrivere la funzione ricerca che dato un albero binario t e un intero k, restituisca 1 se k è contenuto in almeno un nodo di t, 0 altrimenti. Se l’albero è vuoto restituire 0. int ricerca(Tree t, int k) { if (t == NULL) return 0; return t->dato == k || ricerca (t->sx, k) || ricerca (t->dx, k); }

4 Alberi Binari: struttura dati
Esercizio 2: scrivere la funzione get_max che dato un albero binario t restituisca il valore massimo tra i valori contenuti nei nodi di t, 0 altrimenti. Se l’albero è vuoto restituire -1. int get_max(Tree t) { int max_sx, max_dx; /* caso base: albero vuoto */ if (t == NULL) return -1; max_sx = get_max(t->sx); max_dx = get_max(t->dx); return max3(max_sx, max_dx, t->dato); }

5 Alberi Binari: struttura dati
Esercizio 2: scrivere la funzione get_max che dato un albero binario t restituisca il valore massimo tra i valori contenuti nei nodi di t, 0 altrimenti. Se l’albero è vuoto restituire -1. int max3(int a, int b, int c) { if (a > b) if (c > a) return c; else return a; else if (c > b) return c; else return b; }

6 Alberi Binari: struttura dati
Esercizio 3: scrivere la funzione uguali che dati due alberi binari t1 e t2 restituisca 1 se i due alberi sono uguali (stessi nodi con gli stessi valori contenuti), 0 altrimenti. int uguali(Tree t1, Tree t2) { /* caso base: entrambi gli alberi vuoti */ if ((t1 == NULL) && (t2 == NULL)) return 1; /* caso base: uno dei due alberi è vuoto */ if ((t1 == NULL) || (t2 == NULL)) return 0; /* i due nodi in esame devono contenere lo stesso valori e i due sottoalberi sx e dx devono essere uguali (ricorsivamente) */ return t1->dato == t2->dato && uguali(t1->sx, t2->sx) && uguali(t1->dx, t2->dx); }

7 APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Corso di Algoritmi e strutture Dati APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi FINE


Scaricare ppt "APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi"

Presentazioni simili


Annunci Google