APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi

Slides:



Advertisements
Presentazioni simili
Uso avanzato di C.
Advertisements

Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Esercizi su alberi binari
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
APPUNTI SUL LINGUAGGIO C
Esercizi su alberi binari
Sorting: MERGESORT Vogliamo ordinare lista (a 1,…,a n ). 1.Dividi lista in 2 sottoliste aventi (quasi) la stessa dimensione: (a 1,a 3,a 5,…) e (a 2,a 4,…),
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
void binario(int n); …………………
Massimo Comun Divisore
Esercizi su File.
Esercizi Liste.
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
alberi completamente sbilanciati
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo.
Esercitazioni di Prog. II (esercizi su alberi ennari)
Algoritmi e Strutture Dati
Il linguaggio C Strutture Moreno Marzolla
Dizionari alberi bilanciati.
Alberi di ricerca di altezza logaritmica
Condizioni decisionali
Alberi binari Definizione Sottoalberi Padre, figli
Le postcondizioni specificano l’output della funzione.
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
Dizionari alberi bilanciati.
Scrivere programmi corretti
Introduzione agli Algoritmi e alle Strutture Dati
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
esercizi alberi binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
Condizioni decisionali
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
LINGUAGGIO C Alberi e livelli
Alberi di ricerca Lezione n°4
APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Condizioni decisionali
APPUNTI SUL LINGUAGGIO C
Verifica bilanciamento nel numero dei nodi: definizioni.
concetti ed applicazioni
Insiemi disgiunti.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

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

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;

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); }

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); }

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; }

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); }

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