ADT ALBERO BINARIO (tree)! n Rappresentazione collegata (puntatori a strutture)
|
|
- Giorgiana Novelli
- 5 anni fa
- Visualizzazioni
Transcript
1 ADT ALBERO BINARIO (tree)! n Rappresentazione collegata (puntatori a strutture) 1
2 ADT ALBERO BINARIO OPERAZIONI PRIMITIVE DA REALIZZARE Operazione! cons_tree: D x tree x tree -> tree! root: tree -> D! Descrizione! Costruisce un nuovo albero, che ha l elemento fornito come radice con figli i due sottoalberi dati! Restituisce l elemento radice dell albero! left: tree -> tree! Restituisce il sottoalbero sinistro! right: tree -> tree! emptytree: -> tree! empty: tree-> boolean!! Restituisce il sottoalbero destro! Restituisce (costruisce) l albero vuoto! Restituisce vero se l albero dato è vuoto, falso altrimenti! 2
3 ADT ALBERO BINARIO OPERAZIONI DERIVATE (etc etc) Operazione! preorder: tree! inorder: tree! postorder: tree! member: D x tree ->! boolean! height: tree -> int! Descrizione! Visita in preordine (ordine anticipato)! Visita in ordine ( simmetrico)! Visita in postordine ( ritardato)!! Ricerca di un elemento nell albero! Calcola l altezza di un albero! nodi: tree -> int! Conta il numero dei nodi! 3
4 Esercizio ! n Un file binario ad accesso diretto (PERSONE.DAT) contiene un elenco di informazioni su persone (cognome, nome, data di nascita, città di residenza). Il cognome di ciascuna persona costituisce la chiave unica di tale elenco. Per effettuare ricerche su questo elenco, si costruisca un albero binario di ricerca mantenendo, per ciascun cognome il numero di record corrispondente. Si definisca un programma C che: a) costruisca la struttura dati in memoria principale a partire dal file PERSONE.DAT e stampi l elenco ordinato dei cognomi; b) calcoli l'altezza dell albero così ottenuto e il numero dei suoi nodi; c) letto un cognome a terminale, verifichi se esiste un elemento con quella chiave nell albero e, trovatolo, acceda al file e legga il record corrispondente, visualizzando i campi nome, datan e città; d) letto un cognome a terminale, stampi ordinatamente a video i cognomi minori o uguali di quello letto. 4
5 $ Esercizio ! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne altezza e numero di nodi; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
6 COMPONENTI! el.h el.c tree.h tree.c main.c
7 ADT ELEMENT: el.h! /* ELEMENT TYPE - file el.h*/ typedef struct { char nome[15]; char cognome[15]; char datan[7]; char citta[15]; } record_type; typedef struct { char cognome[15]; int pos;} el_type; typedef enum {false,true} boolean; /* operatori esportabili */ boolean isequal(el_type, el_type); boolean isless(el_type, el_type); void showel (el_type);
8 ADT ELEMENT: el.c! /* ELEMENT TYPE - file el.c*/ #include <stdio.h> #include <string.h> #include "el.h" boolean isequal(el_type e1, el_type e2) /* due elementi uguali se stesso cognome */ { if (strcmp(e1.cognome,e2.cognome)==0) return true; else return false; } boolean isless(el_type e1, el_type e2) { if (strcmp(e1.cognome,e2.cognome) <0) return true; else return false; } void showel (el_type e) { printf("%s\t%d\n",e.cognome,e.pos); }
9 ADT TREE: tree.h! /* TREE INTERFACE - file trees.h*/ #include "el.h typedef struct nodo { el_type value; struct nodo *left, *right; } NODO; typedef NODO * tree; /* operatori esportabili */ boolean empty(tree t); tree emptytree(void); el_type root(tree t); tree left(tree t); tree right(tree t); tree cons_tree(el_type e, tree l, tree r); tree ord_ins(el_type e, tree t); void inorder(tree t); int height (tree t); int nodi (tree t); int member_ord(el_type e, tree t); /*NOTA TIPO RESTITUITO */ void stampa_minori(tree t, el_type e); int max_int(int, int);
10 $ TO DO! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Mumble mumble Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
11 main.c (1 - stub) #include <stdio.h> #include <string.h> #include <stdlib.h> #include "tree.h" main() { tree indice=emptytree(); int pos; FILE *f; record_type REC; el_type EL; char COGNOME[15]; f = fopen("persone.dat", "rb"); if(f==null){ printf("errore apertura file\n"); exit(-1); } pos=0; /* CICLO DI SCANSIONE DEL FILE */ while(fread(&rec,sizeof(record_type),1,f)>0){ // definizione campi dell elemento EL // inserimento EL nell albero indice // da implementare }
12 main.c (2 - stub) fclose(f); printf("chiusura del file\n"); printf("stampa dell albero\n"); inorder(indice); /* CALCOLO ALTEZZA E NUM.NODI DELL ALBERO */ printf("altezza dell'albero: %d\n", height(indice)); printf("num. Nodi dell'albero: %d\n", nodi(indice));
13 $ TO DO passo 1! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Mumble mumble Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
14 tree.c (1) #include <stdlib.h> #include "tree.h boolean empty(tree t) /* test di albero vuoto */ { return (t==null); } tree emptytree(void) /* inizializza un albero vuoto */ { return NULL; } 14
15 tree.c (2) el_type root (tree t) /* restituisce la radice dell'albero t */ { if (empty(t)) abort(); else return(t->value); } tree left (tree t) /* restituisce il sottoalbero sinistro */ { if (empty(t)) return(null); else return(t->left); } tree right (tree t) /* restituisce il sottoalbero destro */ { if (empty(t)) return(null); else return(t->right); } 15
16 tree.c (3) tree cons_tree(el_type e, tree l, tree r) /* costruisce un albero che ha nella radice e; per sottoalberi sinistro e destro l ed r rispettivamente */ { tree t; t = (NODO *) malloc(sizeof(nodo)); t-> value = e; t-> left = l; t-> right = r; return (t); } 16
17 tree.c (4) void inorder(tree t) { if (! empty(t)) } { inorder(left(t)); showel( root(t) ); inorder(right(t)); } 17
18 tree.c (5 ord_ins) tree ord_ins(el_type e, tree t) /* albero binario di ricerca senza duplicazioni */ { if (empty(t)) /* inserimento */ } else return cons_tree(e,emptytree(),emptytree()); { if (isless(e,root(t))) } t->left = ord_ins(e,left(t)); else t->right = ord_ins(e,right(t)); return t; 18
19 BST Inserimento iterativo! n L algoritmo di inserimento è simile a quello di ricerca Cerca, nell albero, la posizione corretta di inserimento, ovvero il nodo che diventerà il padre di quello da inserire Una volta trovato il nodo, appende il nuovo nodo come figlio sinistro/destro in modo da mantenere la proprietà di ordinamento dell albero Inserimento di
20 $ Inserimento iterativo tree ord_ins_it(el_type e,tree root) {tree p, t=root; if (root==null) return cons_tree(e,null,null); else { while (t!=null) if (isless(e,t->value)) else {p=t; t=t->left;} {p=t; t=t->right;} } //p punta al padre if (isless(e,p->value)) else return root; } p->left = cons_tree(e,null,null); p->right = cons_tree(e,null,null); 20
21 main.c (soluzione) #include <stdio.h> #include <string.h> #include <stdlib.h> #include "trees.h" main() { tree indice=emptytree(); int pos; FILE *f; record_type REC; el_type EL; char COGNOME[15]; f = fopen("persone.dat", "rb"); if(f==null){ printf("errore apertura file\n"); exit(-1); } pos=0; /* CICLO DI SCANSIONE DEL FILE */ while(fread(&rec,sizeof(record_type),1,f)>0) { strcpy(el.cognome,rec.cognome); EL.pos=pos; /* INSERIMENTO NELL'ALBERO */ printf("inserimento nell albero di %s con posizione %d\n", EL.cognome, pos); indice = ord_ins(el,indice); pos++; }
22 main.c (2 - soluzione) fclose(f); printf("chiusura del file\n"); printf("stampa dell albero\n"); inorder(indice); /* CALCOLO ALTEZZA E NUM.NODI DELL ALBERO */ printf("altezza dell'albero: %d\n", height(indice)); printf("num. Nodi dell'albero: %d\n", nodi(indice));
23 $ TO DO passo 2! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
24 CONTARE I NODI (Albero binario) Algoritmo (per un albero binario) n se l'albero è vuoto, i nodi sono 0 n altrimenti, i nodi sono 1 (la radice) + quelli del figlio sinistro + quelli del figlio destro 1 nodo (radice) Numero di nodi: nl sottoalbero sinistro sottoalbero destro Numero di nodi: nr Totale nodi: 1 + nl + nr
25 tree.c (7) Int nodi(tree t) { if (empty(t)) return 0; } else return (1+nodi(left(t))+nodi(right(t))); n E tail ricorsiva? 25
26 ALTEZZA DI UN ALBERO
27 ALTEZZA DI UN ALBERO (Albero binario) Algoritmo (per un albero binario) n se l'albero è vuoto, l altezza è nulla (0) n altrimenti, è il massimo tra l altezza_aux del figlio sinistro e l altezza_aux del figlio destro 1 arco (lo conto in altezza_aux, solo se figlio non vuoto) Altezza_aux L Altezza_aux R sottoalbero sinistro sottoalbero destro Altezza: 1+ max(height_aux(l),height_aux(r))
28 n $ To Do: altezza di un albero Altezza di un albero, lunghezza del cammino più lungo dalla radice a una delle foglie Algoritmo: n se l'albero è vuoto, o ha solo un nodo (radice) la sua altezza è 0 n altrimenti, è 1 + max( altezza del figlio sinistro, altezza del figlio destro )
29 tree.c (8 - height) int height (tree t) { if (empty(t)) return 0; else return max_int( height_aux(left(t)), } height_aux(right(t))) ; int height_aux(tree t) { if (empty(t)) return 0; } else return (1 + max_int( height_aux(left(t)), n E tail ricorsiva? height_aux(right(t)) )); 29
30 $ To Do: altezza di un albero
31 $ TO DO passo 3! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
32 main.c (3 - stub) /* VISUALIZZAZIONE RECORD */ printf("inserisci un cognome: "); scanf("%s", COGNOME); f = fopen("persone.dat", "rb"); if(f==null){ printf("errore apertura file\n"); exit(-1); } // invocare opportunamente member_ord, // trovare il record sul file con fseek // e stampare risultato } // invocare opportunamente stampa_minori
33 /* VISUALIZZAZIONE RECORD */ printf("inserisci un cognome: "); scanf("%s", COGNOME); f = fopen("persone.dat", "rb"); if(f==null){ printf("errore apertura file\n"); exit(-1); } strcpy(el.cognome, COGNOME); pos = member_ord(el, indice); } if (pos>=0){ fseek(f, pos*sizeof(record_type), SEEK_SET); if(fread(&rec,sizeof(record_type),1,f)>0){ printf("posizione %d: Cognome:%s\tNome:%s\tDatan: %s\tcitta:%s\n", pos,rec.cognome, REC.nome, REC.datan, REC.citta); } stampa_minori(indice, EL); }
34 Ricerca binaria - iterativa! 1. Sia t un puntatore ad albero binario (tree) e gli sia inizialmente assegnata la radice dell albero 2. Finché t non è nullo e la sua radice non contiene il valore cercato, confrontare il valore contenuto nella radice di t con il valore cercato a. Se è uguale, restituire il valore trovato b. Se è minore, assegnare a t il figlio destro e procedere con 2 c. Se è maggiore, assegnare a t il figlio sinistro e procedere con 2 34
35 Ricerca (iterativa) in BST! n E possibile decidere, per ogni nodo, se proseguire la ricerca a sinistra o a destra (ricerca binaria), aggiornando il puntatore t 8 Ricerca di
36 $ TO DO Passo 3! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
37 /* VISUALIZZAZIONE RECORD */ printf("inserisci un cognome: "); scanf("%s", COGNOME); f = fopen("persone.dat", "rb"); if(f==null){ printf("errore apertura file\n"); exit(-1); } strcpy(el.cognome, COGNOME); pos = member_ord(el, indice); } if (pos>=0){ fseek(f, pos*sizeof(record_type), SEEK_SET); if(fread(&rec,sizeof(record_type),1,f)>0){ printf("posizione %d: Cognome:%s\tNome:%s\tDatan: %s\tcitta:%s\n", pos,rec.cognome, REC.nome, REC.datan, REC.citta); } // stampa_minori(indice, EL); }
38 tree.c (7) int member_ord(el_type e,tree t) { if (empty(t)) return -1; } else if (isequal(e,root(t)) else return (t->value).pos; if (isless(e,root(t)) return member_ord(e,left(t)); else return member_ord(e,right(t)) ; n E tail ricorsiva? 39
39 tree.c (6 member_ord) int member_ord(el_type e, tree t) { while (t!=null){ if (isless(e,root(t))) t=t->left; else } return -1; if (isequal(e,root(t))) return (t->value).pos; else t=t->right; } 40
40 $ Esercizio ! Si modifichino i file main.c e tree.c già disponibili, implementando le operazioni richieste in funzione di quelle esportate dall ADT degli elementi Il main da realizzare deve: a) leggere il contenuto del file ricordando il numero del blocco letto e inserendo chiave, posizione come elemento in un albero binario di ricerca, e stampare l elenco ordinato dei cognomi; b) calcolarne numero di nodi e altezza; c) letto un cognome e accedendo all albero recuperare le informazioni complete di quel cognome dal file; d) stampare i cognomi minori di quello letto.
41 STAMPA MINORI Stampa_minori Montale Montale Hesse Pennac Alberoni Marquez Ziliotto sottoalbero sinistro sottoalbero destro
42 STAMPA MINORI Stampa_minori Montale Montale Hesse Pennac Alberoni Marquez Ziliotto sottoalbero sinistro sottoalbero destro n Modifica della visita inorder; stampo il contenuto del nodo solo se il cognome precede quello dato n Non efficientissima (visito tutti i nodi così, anche quelli con cognome sicuramente maggiore)
43 tree.c void stampa_minori(tree t, el_type e) /* ricorsiva visita in ordine simmetrico */ { if (!empty(t)) } } { stampa_minori(left(t),e); if (isless(root(t),e)) showel(root(t)); stampa_minori(right(t),e);
44 UN PO DI CONSIDERAZIONI! n Quanto è bilanciato l albero binario di ricerca ottenuto? n Quanti nodi? à 10 Quale altezza? à 6 n Ci sono molti algoritmi per bilanciare alberi non bilanciati non bilanciato bilanciato
45 Alberi bilanciati! n Il problema di BST è che normalmente NON sono bilanciati: Inserimenti e cancellazioni sbilanciano l albero Se l albero non è correttamente bilanciato le operazioni (tutte) costano parecchio n Soluzione: alberi che si autobilanciano AVL (Adel'son-Vel'skii-Landis) Red-Black 52
46 Alberi AVL! n Un albero AVL è un Albero Binario di Ricerca bilanciato n Un nodo si dice bilanciato quando l altezza del sotto-albero sinistro differisce dall altezza del sotto-albero destro di al più una unità n Un albero si dice bilanciato quando tutti i nodi sono bilanciati n Le operazioni sono le stesse che si possono eseguire su un albero binario di ricerca 53
47 Rotazioni! n Si supponga di disporre di un albero sbilanciato è possibile bilanciarlo tramite opportune rotazioni 8 12 Ruotare il nodo 12 verso sinistra in modo che diventi la radice dell albero à il padre di 12 (8) diventa il suo sotto-albero sinistro
48 Rotazioni! n Rotazione 1: il nodo 12 diventa la radice Ruotare il nodo 15 verso sinistra in modo che diventi la radice dell albero à il padre di 15 (12) diventa il suo sotto-albero sinistro, il sotto-albero sinistro di 15 (13) diventa il sotto-albero destro di 12 55
49 Rotazioni! n Rotazione 2: il nodo 15 diventa la radice e l albero risulta bilanciato
50 Alberi AVL! n Si supponga di partire con un albero bilanciato, secondo la definizione data in precedenza n Una serie di inserimenti/cancellazioni può sbilanciare l albero n Opportune rotazioni sono in grado di ribilanciare l albero n Naturalmente i costi di inserimento/cancellazione crescono di molto ma la ricerca rimane sempre molto efficiente! (O(log2 N) se N nodi) 57
51 Per giocare un po! n Applet java per giocare con alberi di ricerca di vario tipo, con possibilità di inserire, cancellare, ruotare e vedere come si comportano i vari tipi di alberi supportati n Realizzazione modulare in C delle operazioni su AVL tree (insert, delete da fare) n ma anche RedBlack tree 58
52 59
53 Esercizi molto consigliati! Scrivere la ricerca in albero binario di ricerca in modo iterativo Calcolare l altezza di un albero Calcolare il bilanciamento di un nodo (differenza fra le altezze dei sotto-alberi sinistro e destro) 60
Indice come albero binario di ricerca!
Indice come albero binario di ricerca! n Obiettivo: Utilizzare una struttura dati del tipo albero binario di ricerca per realizzare un indice su file Ricerca sull indice in memoria centrale, poi accesso
DettagliADT ALBERO BINARIO (tree)) ADT ALBERO BINARIO
ADT ALBERO BINARIO (tree)) Rappresentazione collegata (puntatori a strutture) 1 ADT ALBERO BINARIO OPERAZIONI O PRIMITIVE DA REALIZZARE Operazione cons_tree: D x tree -> tree root: tree -> D left: tree
DettagliProssime lezioni e tutorato!
Prossime lezioni e tutorato! n 15 Aprile h. 11 Lezione in laboratorio n 20 Aprile (lunedi ) h. 8.45 lezione in Aula 1 (Java) n 22 Aprile h. 11 Lezione in laboratorio Tutorato: n 13 Aprile h. 8.45 n 16
DettagliEsercizio: indice come BST
Esercizio: indice come BST Un file binario ad accesso diretto (PERSONE.DAT) contiene un elenco di informazioni su persone (cognome, nome, data di nascita, città di residenza). Il cognome di ciascuna persona
DettagliGRAFI E ALBERI. Sono strutture dati per rappresentare relazioni binarie su un insieme di elementi. Relazione tra insiemi A, B: R A B
GRAFI E ALBERI a1 R a3 Sono strutture dati per rappresentare relazioni binarie su un insieme di elementi. Relazione tra insiemi A, B: R A B a1 a2 R Una relazione su A={a1,a2 e B={b1,b2,b3 definisce un
DettagliALBERI BINARI DI RICERCA
ALBERI BINARI DI RICERCA ABR Abbiamo visto che la scelta del tipo di dato astratto da utilizzare dipende dal problema. Se la situazione è tale per cui la lista deve essere continuamente modificata in dimensione
DettagliL albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.
Lezioni di C L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. qstruttura del file system qalbero genealogico qorganigramma qalbero di decisione q... s=6*8+((2+42)*(5+12)+987*7*123+15*54)
DettagliADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)
ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Alberi di ricerca Domenico Fabio Savo 1 Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato Dizionario 2 Alberi binari di ricerca (BST
DettagliAlberi Binari di Ricerca
Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica
DettagliOrganigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre
Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology
DettagliLezione 12 Tabelle Hash
Lezione 12 Tabelle Hash Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
Dettaglid. Cancellazione del valore 5 e. Inserimento del valore 1
Esercizio1 Si consideri un albero binario non vuoto in cui a ciascun nodo v è associato un numero reale v.val. Scrivere un algoritmo che, dato in input l'albero T e un numero reale x, restituisce true
DettagliStrutture dati Alberi binari
Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori
DettagliAlberi binari e alberi binari di ricerca
Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9
DettagliAlberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3
Alberi binari (radicati e ordinati) Il figlio sinistro della radice Il padre del nodo 5 e del nodo 3 4 3 Il figlio sinistro del nodo 2 2 5 1 6 7 8 9 La radice Il figlio destro della radice una foglia Figlio
DettagliStruttura dati Dizionario
Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave
DettagliPROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE
PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta
DettagliAlberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
DettagliAlberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
DettagliLaboratorio di Informatica. Lezione 8: Liste e alberi
Laboratorio di rmatica Lezione 8: Liste e alberi Il programma della lezione 7 (parte 1) #include #include typedef struct node char key[20]; int volte; struct node *psnnext; NODE, *PNODE;
DettagliAlberi. Alberi: Esempio di utilizzo
Sono strutture dati del tipo: Alberi SOTTOALBERO n1 RADICE DELL ALBERO () n2 n n4 Profondità o Livello 0 1 n n n n n n 2 NODI FOGLIA (LEAF NODES) 1 Alberi: Esempio di utilizzo Rappresentazione di un file
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliBinary Search Trees (BST) Algoritmi sui BST. Algoritmi - Ricerca. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A.
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T Modulo Corso di Laurea in Ingegneria Informatica Anno accademico 00/009 Binary Search Trees (BST) Also Known As Alberi
DettagliBinary Search Trees (BST)
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 200/2009 Binary Search Trees (BST) Also Known As
DettagliARGOMENTO: Liste ESERCIZIO n 1
ARGOMENTO: Liste ESERCIZIO n 1 Un file binario (CABALA.DAT) contiene informazioni (numero e parola associata di al massimo 50 caratteri) su alcuni numeri interi positivi. Lo stesso numero può comparire
DettagliVerificare se un albero binario è bilanciato
Verificare se un albero binario è bilanciato Definizione: Un albero è bilanciato nel Numero dei Nodi, brevemente n- bilanciato, quando, per ogni sottoalbero t radicato in un suo nodo, il numero dei nodi
DettagliEsercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.
Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
Dettagliricerca di un elemento, verifica dell appartenenza di un elemento
Alberi Binari di Ricerca Gli alberi binari di ricerca (o, alberi di ricerca binaria) sono strutture dati che consentono, su un insieme di elementi con un ordine totale le operazioni di: ricerca di un elemento,
DettagliAlberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)
Alberi di ricerca Alberi binari di ricerca Un esempio: l ADT Dizionario (mutabile) Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Alberi binari di
DettagliAlbero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)
Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione
DettagliDivide et impera su alberi
Divide et impera su alberi Caso base: peru = null o una foglia Decomposizione: riformula il problema per i sottoalberi radicati nei figli di u. Ricombinazione: ottieniilrisultatoconricombina 1 Decomponibile(u):
DettagliLaboratorio di algoritmi e strutture dati
Laboratorio di algoritmi e strutture dati Docente: Violetta Lonati mercoledì 15 novemb017 L esercitazione di oggi prevede di utilizzare gli alberi binari e in particolare gli alberi binari di ricerca.
DettagliAlgoritmi e strutture dati
Algoritmi e Strutture Dati Alberi di ricerca Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario 2 Alberi binari di ricerca (BST = binary search tree)
DettagliEsercizi di preparazione alla prova scritta
Esercizi di preparazione alla prova scritta ARGOMENTI: Istruzione dominante, complessità ESERCIZIO n 1 Si analizzi il seguente frammento di codice C: #define N 10 int V[N]={1,2,3,4,5,6,7,8,9,10;... main()
DettagliAlberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
DettagliComplessità algoritmi su strutture dati (riassunto)
Complessità algoritmi su strutture dati (riassunto) Struttura di dato Algoritmo di ricerca Complessità (caso peggiore) applicabile Tavola come array non Ricerca sequenziale O(N) ordinato (N elementi) Tavola
DettagliAlberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.
Alberi Un albero è un insieme di oggetti, chiamati nodi, su cui è definita una relazione binaria G(x, y) che leggiamo x è genitore di y tale che: 1. esiste un unico nodo, chiamato radice, che non ha genitori;
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
DettagliUn esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem
Un esempio: l ADT Dizionario (mutabile) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Parte 19-D Alberi
DettagliAlberi Binari di Ricerca e Alberi Rosso-Neri
Alberi Binari di Ricerca e Alberi Rosso-Neri Obiettivi Studiare strutture dati che consentano di effettuare in modo efficiente le operazioni di Minimo e massimo Successore Inserimento e cancellazione Ricerca
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine
DettagliEsercizi parte 3. La classe ArrayBinTree dovra implementare, tra le altre, l operazione seguente: padre: dato un nodo, restituire l indice del padre.
Esercizi parte 3 RAPPRESENTAZIONE DI ALBERI BINARI 1. Definire una classe LinkedBinTree che implementa alberi binari in modo collegato, con nodi implementati come oggetti di classe BinNode. La classe dovra
DettagliImplementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
DettagliProva di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 7 Febbraio 2003 TESTO e RISPOSTE Esercizio 1 (punti 5 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali). Riportiamo
DettagliALBERI. Un Albero. Un grafo aciclico che non è un albero: due archi entranti in uno stesso nodo
ALBERI Un Albero è un grafo orientato connesso e aciclico, in cui inoltre esattamente un nodo (detto radice) non ha nessun arco entrante, e ogni altro nodo ha esattamente un arco entrante. Ogni nodo viene
DettagliAlberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario Alberi di ricerca Basato su materiale di C. Demetrescu, I. Finocchi, G.F.
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo Frodo Daisy Alberi Gli alberi sono una generalizzazione
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI
SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione
DettagliLaboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione con Vettori Implementazione con Strutture Collegate Concetti
DettagliDizionari. Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Ugo de' Liguoro - Algoritmi e Seprimentazioni 03/04 Lez.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Mela Astro Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliEsercizi BST - AVL. E. Fachini
Esercizi BST - AVL. Verifica che un ABR è un AVL 2. verifica bilanciamento in altezza di un ABR 3. Costruzione alberi di Fibonacci 4. Calcolo altezza albero AVL in O(lg n) 5. split di una ABR intorno a
DettagliSTRUTTURE DATI: OLTRE LE LISTE
STRUTTURE DATI: OLTRE LE LISTE Le liste risolvono un ampio ventaglio di problemi, ma sono strutture dati sequenziali e come tali inadatte a gestire grandi quantità di dati quando le operazioni più frequenti
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA
Dettaglinow is the for men all good come aid
Alberi binari Supponiamo di volere gestire il problema di contare le occorrenze di tutte le parole presenti in un particolare input. Poichè la lista delle parole non è nota a priori, non siamo in grado
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliLaboratorio di algoritmi e strutture dati
Laboratorio di algoritmi e strutture dati Docente: Violetta Lonati mercoledì 25 novemb009 L esercitazione di oggi prevede di utilizzare gli alberi binari e in particolare gli alberi binari di ricerca.
DettagliMoltiplicazione veloce di interi
Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato
DettagliAlberi Binari di Ricerca
Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,
DettagliAlberi di ricerca binari
Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Introduzione Gli alberi di ricerca binari (Binary Search Tree, o BST) sono una struttura di dati che supporta in modo
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
DettagliListe semplici - ADT!
Liste semplici - ADT Obiettivi: Discutere la realizzazione collegata (puntatori a strutture) di liste semplici Introdurre l ADT lista semplice e le operazioni tipiche su essa 1 ADT LISTA (1) In generale,
Dettagli7. Settima esercitazione autoguidata: alberi binari
7. Settima esercitazione autoguidata: alberi binari 31 7.1. Costruzione di un albero (ALBERI1.C) Scrivere un programma che - riceve il nome di un file contenente la rappresentazione parentetica di un albero
DettagliGLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
DettagliUn esempio di mutua ricorsione
Inserimento in un ABR n-bilanciato Un esempio di mutua ricorsione con gli alberi bilanciati in altezza, proprietà più debole, si ottiene maggiore semplicità delle operazioni di ribilanciamento (niente
Dettaglidizionari alberi bilanciati
dizionari alberi bilanciati dizionari ADT che supportano le seguenti operazioni membership anche detta search insert delete o remove le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati
DettagliRipasso di programmazione ricorsiva
Ripasso di programmazione ricorsiva Ripasso di programmazione ricorsiva Algoritmo ricorsivo: algoritmo espresso in termini di se stesso. Programmazione iterativa e programmazione ricorsiva sono equivalenti.
DettagliComplessità algoritmi su strutture dati (riassunto)
Complessità algoritmi su strutture dati (riassunto) Struttura di dato Ricerca Complessità (caso peggiore) Tavola come array non Ricerca sequenziale O(N) ordinato (N elementi) Tavola come array ordinato
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliAppunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato
Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato Alessandro Panconesi DSI, La Sapienza via Salaria 113, 00198, Roma Consideriamo un problema che ci consentirá di vedere un
DettagliFondamenti di Informatica L-A
Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1
DettagliIn questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg.
In questa lezione Alberi binari: visite e esercizi su alberi binari [CLRS09] cap. 12 per la visita inorder!1 Visita inordine di un albero binario visita inordine(x) se l albero x non è nullo allora visita
DettagliIndici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2
INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato
DettagliQuickSort Università degli Studi di Milano
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
Dettaglialberi completamente sbilanciati
alberi completamente sbilanciati Il numero dei nodi al livello i è 1, per 0 i altezza L altezza h di un albero completamente sbilanciato con n nodi è h = n-1 1 Un albero completamente bilanciato o pieno
DettagliEsercizio 1 File: ordinamento di un archivio di studenti (file binario)
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 9 Esercitazione: 19 gennaio 2005 Esercizi sui file e sulle liste. Scaletta Esercizio 1 File: ordinamento di un archivio
DettagliIndici con gli alberi
Indici con gli alberi Alberi perfettamente bilanciati per indici su memorie di massa: B-alberi Indici su memorie secondarie Spesso i dati da ordinare sono in quantità tale da richiedere dispositivi di
DettagliDizionari. Dizionari con gli alberi. Alberi binari di ricerca. Realizzazione con alberi binari di ricerca. Alberi rosso-neri.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Astro Mela Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliUn albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo
alberi completamente sbilanciati Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliEsercizio 1. Liste di interi
Esercizio 1. Liste di interi Si legga una sequenza di numeri interi da tastiera, dopo ogni inserimento chiedere all'utente se vuole continuare, quindi: Creare due liste L1 e L2 con inserimento ordinato;
DettagliEsercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
DettagliEsercizi su ABR. Prof. E. Fachini - Intr. Alg.!1
Esercizi su ABR Confronto proprietà ABR e Max-Heap. Proprietà del cammino radice-foglia individuato da una ricerca. Fusione di due ABR. Il successivo calcolato dalla radice Costruzione di un ABR bilanciato
DettagliComplessità algoritmi su strutture dati
Complessità algoritmi su strutture dati Struttura di dato Ricerca Complessità (caso peggiore) Tavola non ordinata (N Ricerca O(N) elementi) sequenziale Tavola ordinata (N Ricerca binaria O(log2N) elementi)
DettagliStrutture dati dinamiche in C (II)
Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L
Dettagli#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30
/* Dopo aver definito una lista in grado di contenere i dati di alcune persone (nome, genere e altezza in metri), scrivere un programma che consenta di verificare che inizialmente la lista sia vuota e
DettagliAlgoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario
Algoritmi e Strutture Dati Capitolo 6 Il problema del dizionario Il tipo dato Dizionario Suppongo sempre che mi venga dato un riferimento diretto all elemento da cancellare Applicazioni: gestione archivi
DettagliInformatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST
Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Informatica 3 Lezione 15 - Modulo 1 Implementazione degli alberi binari Introduzione
Dettagli