Andrea Zandatutoraggio strutture dati 3-5-20041 STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°14 albero di ricerca binario.

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Ordinamento ottimo Ricerca
Alberi binari Definizione Sottoalberi Padre, figli
Lez 411 Marzo La macchina Dispositivi di input/output Architettura.
Algoritmi Avanzati Grafi e Alberi
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Strutture dati elementari
Alberi binari di ricerca
Code con priorità Ordinamento
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree { };
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
tipo astratto, implementazione, algoritmi
Albero: insieme di punti chiamati NODI e linee chiamate EDGES
Algoritmi e Strutture Dati 20 aprile 2001
Test delle camere BMS-E ritornate da Napoli Michele Bianco RPC Week Lecce 04/05/2004.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su alberi binari
Heap binari e HeapSort.
Alberi di ricerca binari
PAPERT ED IL SENSO DEL LOGO
COMUNICAZIONE VISIVA.
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
© Permanent Mission of Italy to UN - Andrea Cavallari LE NAZIONI UNITE E I DIRITTI UMANI.
Donna:Professione Ingegnere
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.
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Seminario interattivo Il dossier virtuale: da prototipo a prodotto del Sistema informativo Dati statistici e gestione dei nuovi documenti Laura Zambotto.
Alberi binari Definizione della struttura dati: struct tree { };
Introduzione Tumino Assemblea Intersettoriale Beni Culturali 07 luglio Assemblea del Coordinamento intersettoriale sui Beni culturali – punti di.
Alberi CORDA – Informatica A. Ferrari Testi da
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
1 Un esempio con iteratore: le liste ordinate di interi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Transcript della presentazione:

Andrea Zandatutoraggio strutture dati STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°14 albero di ricerca binario

Andrea Zandatutoraggio strutture dati TESTO ESERCITAZIONE Scrivere un algoritmo C che implementi la struttura albero di ricerca binario. Il programma deve prevedere le funzioni di inserimento, cancellazione, visualizzazione e ricerca. Il campo chiave è costituito da una stringa. Suggerimento. Per semplicità si supponga che ogni dato sia una stringa che ne costituisce la chiave. Per visualizzare i dati utilizzare gli algoritmi che visitano lalbero. Implementare inoltre sia lalgoritmo di ricerca ricorsivo che quello iterativo.

Andrea Zandatutoraggio strutture dati ALBERI DI RICERCA BINARI Un albero di ricerca binario offre delle prestazioni migliori di quelle delle strutture dati finora studiare, quando le operazioni da svolgere sono linserimento, la cancellazione e la ricerca di elementi arbitrari. Definizione: Un albero di ricerca binario è un albero binario che soddisfa le seguenti proprietà: 1) Ogni elemento ha una chiave e le chiavi sono uniche. 2) Le chiavi in un sottoalbero sinistro non vuoto devono essere più piccole della chiave nella radice del sottoalbero. 3) Le chiavi in un sottoalbero destro non vuoto devono essere più grandi della chiave nella radice del sottoalbero. 4) Anche i sottoalberi sinistro e destro sono alberi di ricerca binari

Andrea Zandatutoraggio strutture dati ALBERI DI RICERCA BINARI ESEMPIO DI ALBERO DI RICERCA BINARIO:

Andrea Zandatutoraggio strutture dati INSERIMENTO Per inserire un nuovo elemento dobbiamo prima verificare che il valore di chiave sia diverso da quelli degli elementi esistenti. Per fare questo utilizziamo una funzione di ricerca: Se lalbero è vuoto o se il valore della chiave è presente viene fornito NULL, in caso contrario la funzione fornisce un puntatore allultimo dellalbero che è stato incontrato durante la ricerca. Il nuovo elemento deve essere inserito come figlio di questo nodo.

Andrea Zandatutoraggio strutture dati INSERIMENTO ESEMPIO DI INSERIMENTO: 80

Andrea Zandatutoraggio strutture dati ESEMPIO DI INSERIMENTO: INSERIMENTO 35

Andrea Zandatutoraggio strutture dati INSERIMENTO Algoritmo

Andrea Zandatutoraggio strutture dati CANCELLAZIONE CANCELLAZIONE DI UN NODO TERMINALE:

Andrea Zandatutoraggio strutture dati CANCELLAZIONE DI UN NODO NON TERMINALE CON UN SOLO FIGLIO: CANCELLAZIONE

Andrea Zandatutoraggio strutture dati CANCELLAZIONE DI UN NODO NON TERMINALE CON UN SOLO FIGLIO: CANCELLAZIONE

Andrea Zandatutoraggio strutture dati CANCELLAZIONE CANCELLAZIONE DI UN NODO NON TERMINALE CON DUE FIGLI:

Andrea Zandatutoraggio strutture dati CANCELLAZIONE DI UN NODO NON TERMINALE CON DUE FIGLI: CANCELLAZIONE

Andrea Zandatutoraggio strutture dati CANCELLAZIONE Algoritmo

Andrea Zandatutoraggio strutture dati if ( p!=NULL && strcmp(item, p->dati)==0) { if (node->destro==NULL) node = node->sinistro; else if (node->sinistro==NULL)node=node->destro; else { tmp = node->sinistro; previous = node; while (tmp->destro!=NULL) { previous = tmp; tmp = tmp->destro; } strcpy(node->dati, tmp->dati); if (previous==node)previous->sinistro = tmp->sinistro; else previous->destro = tmp->sinistro; } if (p==*root)*root = node; else if (prev->sinistro == p) prev->sinistro = node; else prev->destro = node; } prev p node node = NULL CANCELLAZIONE CANCELLAZIONE DI UN NODO TERMINALE: 10

Andrea Zandatutoraggio strutture dati if ( p!=NULL && strcmp(item, p->dati)==0) { if (node->destro==NULL) node = node->sinistro; else if (node->sinistro==NULL)node=node->destro; else { tmp = node->sinistro; previous = node; while (tmp->destro!=NULL) { previous = tmp; tmp = tmp->destro; } strcpy(node->dati, tmp->dati); if (previous==node)previous->sinistro = tmp->sinistro; else previous->destro = tmp->sinistro; } if (p==*root)*root = node; else if (prev->sinistro == p) prev->sinistro = node; else prev->destro = node; } p node CANCELLAZIONE DI UN NODO NON TERMINALE CON UN SOLO FIGLIO: 20 CANCELLAZIONE prev node

Andrea Zandatutoraggio strutture dati if ( p!=NULL && strcmp(item, p->dati)==0) { if (node->destro==NULL) node = node->sinistro; else if (node->sinistro==NULL)node=node->destro; else { tmp = node->sinistro; previous = node; while (tmp->destro!=NULL) { previous = tmp; tmp = tmp->destro; } strcpy(node->dati, tmp->dati); if (previous==node) previous->sinistro = tmp->sinistro; else previous->destro = tmp->sinistro; } if (p==*root)*root = node; else if (prev->sinistro == p) prev->sinistro = node; else prev->destro = node; } p node CANCELLAZIONE DI UN NODO NON TERMINALE CON DUE FIGLI: 20 prev CANCELLAZIONE 25 tmp previous

Andrea Zandatutoraggio strutture dati RICERCA La funzione di ricerca fornisce un puntatore al nodo che contiene la chiave che stiamo cercando, oppure se tale nodo non esiste fornisce NULL. Algoritmo ricorsivo Algoritmo iterattivo

Andrea Zandatutoraggio strutture dati La visualizzazione può essere implementata con vari algoritmi: preorder, inorder, postorder, level_order. La visualizzazione inorder ci visualizzerà gli elementi con le chiavi ordinate. VISUALIZZAZIONE eseguibile

Andrea Zandatutoraggio strutture dati SITO SLIDES web.tiscali.it/ANDREAZ