esercizi alberi binari

Slides:



Advertisements
Presentazioni simili
1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Advertisements

Uso avanzato di C.
if (condizione.) { blocco_istruzioni } else
Calcolo del minimo comune multiplo (m.c.m.) Luigi Sante
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
MultiSet, Liste Ordinate
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Esercizi su alberi binari
Tail recursion: esempio
Esercizi su alberi binari di ricerca
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.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
CORSO DI PROGRAMMAZIONE II Operazioni su alberi ordinati e non
APPUNTI SUL LINGUAGGIO C
Esercizi su alberi binari
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Le liste dinamiche La ricorsione
Alberi di ricerca binari
AN Fondam98 Sorting Ricerca in un vettore ordinato.
void binario(int n); …………………
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 { };
Corso di Informatica 2 a.a. 2003/04 Lezione 6
Lezione n° 07 - Esercitazione
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
alberi completamente sbilanciati
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Alberi.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 8 Oggetti statici e dinamici. Classi annidate. Costruttori/distruttori.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
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 LE FUNZIONI.
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)
Divide et Impera Quicksort Mergesort Charles Antony Richard Hoare
Esercizi.
Le postcondizioni specificano l’output della funzione.
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
Divide et Impera Quicksort Mergesort
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
iterazione o ricorsione nel pensare per OGGETTI
Programmazione e Laboratorio di Programmazione
Scrivere programmi corretti
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
Alberi n-ary Lezioni di C.
comprensione e modifica di codice
comprensione e modifica di codice
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
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.
Programmazione e Laboratorio di Programmazione
Verifica bilanciamento nel numero dei nodi: definizioni.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e Strutture Dati
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

esercizi alberi binari int numNodi(TreePtr tPtr) /* Postc: restituisce il numero dei nodi di tPtr */ {if (!tPtr ) return 0; return numNodi(tPtr->left) + numNodi(tPtr->right) + 1; } int alt(TreePtr tPtr) /* Postc: restituisce l’altezza di tPtr */ {if (!tPtr ) return -1; return max(alt(tPtr->left),alt(tPtr->right)) + 1;

Versione “quasi tail recursive”, :il calcolo del numero dei nodi void numNodi2(TreePtr tPtr, int* num) /* num inizialmente deve esser 0 Postc: calcola in num il numero dei nodi di tPtr */ {if (!tPtr ) return; (*num)++; numNodi2(tPtr->left,num); numNodi2(tPtr->right,num);} N.B. “quasi tail recursive” è qui usato per identificare il caso in cui la funzione non ha chiamate in sospeso i cui valori devono essere combinati all’uscita. Per la versione iterativa equivalente serve comunque la gestione di una pila

Versione “quasi tail recursive”: il calcolo dell’altezza void alt2(TreePtr tPtr, int liv,int *altmax) /* inizialmente liv = 0 e *altmax =-1; Postc: calcola in altmax l’altezza di tPtr */ { if (!tPtr) return; if (foglia(tPtr)) *altmax = max(*altmax,liv); alt2(tPtr->left,liv+1,altmax); alt2(tPtr -> right, liv+1,altmax); }

le funzioni ausiliarie int max(int n,int m); int max(int n,int m) {if (n<m) return m; else return n;} int foglia(TreePtr tPtr); int foglia(TreePtr tPtr) { if (!tPtr ->left && !tPtr->right) return 1; else return 0;}