argomenti alberi terminologia tipo di dato astratto albero tipo astratto, implementazione, algoritmi es.: radice R con n sottoalberi radice

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "argomenti alberi terminologia tipo di dato astratto albero tipo astratto, implementazione, algoritmi es.: radice R con n sottoalberi radice"

Transcript

1 argomenti alberi tipo astratto, implementazione, algoritmi! tipo astratto albero! definizione! implementazione in Java! algoritmi di visita! alberi binari! implementazione di alberi binari in Java ASD - Alberi 2 tipo di dato astratto albero! insieme vuoto di nodi oppure costituito da una radice R e da 0 o più alberi (sottoalberi)! la radice di ogni sottoalbero è collegata a R da un arco es.: radice R con n sottoalberi R terminologia! genitore, figlio, fratello! concetti intuitivi! nodo! foglia se ha zero figli! interno se ha almeno un figlio radice foglia nodo interno T 1 T 2 T n ASD - Alberi 3 ASD - Alberi 4

2 terminologia/2 alberi?! livello di un nodo! lunghezza (n.ro nodi) percorso radice-nodo! ramo! percorso radice-foglia! altezza albero! lunghezza (n.ro nodi) ramo più lungo livello radice = 1 altezza = 3 ASD - Alberi 5 ASD - Alberi 6 esempi di alberi! alberi genealogici! gerarchie di ereditarietà! ad es., in Java! classificazioni di specie animali! organizzazione del territorio! continente, nazione, regione, provincia ecc! (alcuni) organigrammi! file system! domini Internet ASD - Alberi 7 rappresentazione di alberi con liste collegate A Primo figlio di R Fratello di A C livello di C = 3 R B Elemento Riferimento al primo figlio Riferimento al prossimo fratello ASD - Alberi 8

3 operazioni sugli alberi! operazioni più importanti! element(v): restituisce l elemento memorizzato nel nodo v! root(): restituisce la radice dell albero! parent(v): restituisce il genitore del nodo v! children(v): restituisce i figli di v! isleaf(v): restituisce true se v è una foglia! isroot(v): restituisce true se v è la radice operazioni sugli alberi! Altre operazioni! livello di un nodo! altezza dell albero! # nodi! # foglie! arità! max # di figli di un nodo dell albero! isempty! true se l albero ha zero nodi ASD - Alberi 9 ASD - Alberi 10 rappresentazione dei nodi in Java! nodi class TreeNode { Object element; TreeNode firstchild; TreeNode nextsibling; TreeNode parent; tipo astratto albero in Java public interface Tree { Object element(treenode v); TreeNode root(); TreeNode parent(treenode v); ListIterator children(treenode v); boolean isleaf(treenode v); boolean isroot(treenode v); ASD - Alberi 11 ASD - Alberi 12

4 algoritmi su alberi algoritmi su alberi/2! livello di un nodo public int level(treenode v) { if(this.isroot(v)) return 1; else return 1 + level(this.parent(v));! costo proporzionale all altezza: O(h ) ASD - Alberi 13! altezza di un (sotto)albero! costo proporzionale al numero di nodi:!(n )! viene esaminato ogni nodo! ciascun nodo viene esaminato una sola volta int height(v) { int h=0, hmax=0; if(v == null) return 0; if(isleaf(v)) return 1; TreeNode w = v.firstchild; hmax = height(w); while(w.nextsibling!= null) { w = w.nextsibling; h = height(w); if(h > hmax) hmax = h; return 1 + hmax; ASD - Alberi 14 algoritmi su alberi/3! visita (o attraversamento) di un albero! in profondità (depth-first search, a scandaglio): DFS! vengono visitati i rami, uno dopo l altro! tre varianti! in ampiezza (breadth-first search, a ventaglio): BFS! a livelli, partendo dalla radice ASD - Alberi 15 visite in profondità/preordine! in preordine (preorder, o ordine anticipato)! dato un nodo v! visita v! visita i sotto-alberi aventi come radice i figli di v, da sinistra verso destra void treepreorder(root) { if(root == null) return; <visita root> r = root.firstchild while (r!= null) { treepreorder(r); r = r.nextsibling; ASD - Alberi 16

5 visite in profondità/inordine! in ordine simmetrico (inorder)! dato un nodo v con k sotto-alberi! visita il primo sotto-albero (radice v.firstchild)! visita v void treeinorder(root) { if(root == null) return; r = root.firstchild; treeinorder(r); <visita root> r = r.nextsibling;! visita gli altri k-1 sotto-alberi while (r!= null) { treeinorder(r); r = r.nextsibling; ASD - Alberi 17 visite in profondità/postordine! in postordine (postorder, o ordine posticipato)! dato un nodo v! visita i sotto-alberi aventi come radice i figli di v, da sinistra verso destra! visita v void treepostorder(root) { if(root == null) return; r = root.firstchild while (r!= null) { treepostorder(r); r = r.nextsibling; <visita root> ASD - Alberi 18 visite in profondità preordine inordine postordine ASD - Alberi 19 visita in ampiezza! breadth-first search (BFS), usa una coda! dato un nodo v void bfs(v) { if(v == null) return; queue.enqueue(v); while (!queue.isempty()) { v = queue.dequeue(); v.visit(); TreeNode w = v.firstchild; while(w!= null) { queue.enqueue(w); w = w.nextsibling; ASD - Alberi 20

6 visita in ampiezza BFS ASD - Alberi 21 alberi binari! un albero si dice binario se ogni nodo può avere al più 2 figli! la rappresentazione si semplifica public class BinaryNode { protected Object element; protected BinaryNode leftchild; protected BinaryNode rightchild; implementazione minima ASD - Alberi 22 ADT albero binario in Java public interface BinaryTree { Object element(binarynode v); BinaryNode root(); BinaryNode parent(binarynode v); BinaryNode leftchild(binarynode v); BinaryNode rightchild(binarynode v); boolean isleaf(binarynode v); boolean isroot(binarynode v); alberi binari/visita in preordine void treepreorder(binarynode v) { if(v == null) return; <visita v> treepreorder(leftchild(v)); treepreorder(rightchild(v)); ASD - Alberi 23 ASD - Alberi 24

7 alberi binari/visita inordine void treeinorder(binarynode v) { if(v == null) return; treeinorder(leftchild(v)); <visita v> treeinorder(rightchild(v)); alberi binari/visita in postordine void treepostorder(binarynode v) { if(v == null) return; treepostorder(leftchild(v)); treepostorder(rightchild(v)); <visita v> ASD - Alberi 25 ASD - Alberi 26 alberi binari/visita in ampiezza void bfs(v) { TreeNode p = v; queue.enqueue(p); while (!queue.isempty()) { p = (BSTNode) queue.dequeue(); p.visit(); if (p.leftchild!= null) queue.enqueue(p.leftchild); if (p.rightchild!= null) queue.enqueue(p.rightchild); ASD - Alberi 27 strutture dati per alberi binari! vettori! rappresentazioni collegate! esercizi:! implementare l interfaccia BinaryTree usando una rappresentazione collegata! scrivere un programma che legga gli elementi (stringhe) di un albero binario e li stampi effettuando una visita in preordine ASD - Alberi 28

8 4 uso di vettori! ogni nodo v è memorizzato in posizione p(v)! se v è la radice allora p(v)=1 (indice 0 in Java, C, C++)! se v è il figlio sinistro di u allora p(v)=2p(u) 2! se v è il figlio destro di u allora p(v)=2p(u) uso di vettori/2! implementazione statica: è necessaria una stima del numero massimo di nodi dell albero! può portare a spreco di risorse! nel caso peggiore, un albero con n nodi richiede un vettore con 2 n -1 elementi (se l albero degenera in una catena) ASD - Alberi - 29 ASD - Alberi 30 uso di vettori/3! in Java: si possono usare le classi Vector (sincronizzata) o ArrayList (non sincronizzata)! Vector e ArrayList gestiscono anche il ridimensionamento quando il numero di elementi cresce oltre la capacità corrente! ciò porta a ritardi (per gestire l allocazione di nuova memoria)! esercizio: scrivere una classe che implementi l interfaccia BinaryTree usando ArrayList o Vector rappresentazione collegata public class LinkedBinaryTree implements BinaryTree { private BinaryNode root; /* Rif. alla radice*/ private int size; public LinkedBinaryTree() { root = new BinaryTreeNode(null, null, null); size = 0; /* Metodi */ /* Fine della classe */ ASD - Alberi 31 ASD - Alberi 32

alberi tipo astratto, implementazione, algoritmi

alberi tipo astratto, implementazione, algoritmi alberi tipo astratto, implementazione, algoritmi argomenti tipo astratto albero definizione implementazione in Java algoritmi di visita alberi binari implementazione di alberi binari in Java ASD - Alberi

Dettagli

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica Il TDA Tree Alberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero

Dettagli

Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata

Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata Il TDA BinaryTree Albero Binario A B C D E F G Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio

Dettagli

Laboratorio 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 Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione con Vettori Implementazione con Strutture Collegate Concetti

Dettagli

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. 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

Dettagli

Il TDA Tree. Alberi. Esempio. Alberi. Applicazioni. Definizione di albero

Il TDA Tree. Alberi. Esempio. Alberi. Applicazioni. Definizione di albero Il T Tree lberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero sono

Dettagli

Il TDA BinaryTree. Albero Binario. Albero sintattico. Applicazioni. Albero delle decisioni binario. Albero binario di ricerca

Il TDA BinaryTree. Albero Binario. Albero sintattico. Applicazioni. Albero delle decisioni binario. Albero binario di ricerca Il T inarytree lbero inario F G lbero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio destro H I

Dettagli

Esercizi 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. 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

Dettagli

Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z

Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Anno Accademico 2002-2003 9 luglio 2002-03 Domanda 1, punti 6 Si consideri la seguente classe Java, in cui,

Dettagli

Alberi. Albero binario. Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro)

Alberi. Albero binario. Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro) Albero binario Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro) albero binario proprio: ogni nodo interno ha esattamente due

Dettagli

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto

Dettagli

Alberi ed Alberi Binari

Alberi 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,

Dettagli

Alberi ed Alberi Binari di Ricerca

Alberi ed Alberi Binari di Ricerca Alberi ed Alberi Binari di Ricerca 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

Dettagli

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

ALBERI : 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

Dettagli

Heap e Code di Priorità

Heap e Code di Priorità Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non

Dettagli

Alberi. Definizione, realizzazione e algoritmi elementari. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 7

Alberi. Definizione, realizzazione e algoritmi elementari. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 7 Alberi Definizione, realizzazione e algoritmi elementari Cosa sono gli alberi? Strutture gerarchiche di ogni tipo Generale Colonnello 1 Colonnello k Maggiore 1,1 Maggiore 1,m Capitano Maggiore k,1 Maggiore

Dettagli

Strutture dati Alberi binari

Strutture 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

Dettagli

Alberi. Definizioni principali

Alberi. Definizioni principali Definizioni principali Un albero è una struttura dati che contiene oggetti organizzati gerarchicamente (a differenza della lista di nodi, dell'array list, i cui elementi sono organizzati linearmente) radice

Dettagli

Algoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi

Algoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi Algoritmi e Strutture Dati Laboratorio 20/10/2008 Primo Esercizio 2 Scrivere un programma per misurare il tempo necessario per ordinare un vettore di interi contenente 10-10 7 elementi utilizzando l insertion

Dettagli

Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà

Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà Informatica 3 Informatica 3 LEZIONE 14: Alberi binari: introduzione Lezione 14 - Modulo 1 Modulo 1: Definizioni e proprietà Modulo 2: Attraversamento degli alberi binari Definizioni e proprietà Politecnico

Dettagli

Alberi binari ( 7.3)

Alberi binari ( 7.3) Alberi binari ( 7.3) + a 3 b Albero Binario ( 7.3) DEFINIZIONE Albero Binario è un albero ordinato in cui ogni nodo ha al più due figli. Un albero binario si dice proprio se ogni nodo ha o zero o figli

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati alberi radicati m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Esercitazione su Albero Binario

Esercitazione su Albero Binario Esercitazione su Albero Binario Costruzione iteratore nel preordine Costruzione albero simmetrico Attraversamento per livelli dell albero Costruttore di copia dell albero Esercitazione su Albero Binario

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

ALBERI BINARI DI RICERCA

ALBERI 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

Dettagli

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Organigramma 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

Dettagli

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.

L 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)

Dettagli

heap concetti ed applicazioni

heap concetti ed applicazioni heap concetti ed applicazioni ADT coda di priorità operazioni getfirst restituisce l'elemento nella struttura con massima priorità deletefirst cancella l'elemento nella struttura con massima priorità insert

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi 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

Dettagli

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

Albero 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

Dettagli

Divide et impera su alberi

Divide 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):

Dettagli

Esempi. Albero di interi. Struttura che non è un albero!

Esempi. Albero di interi. Struttura che non è un albero! albero si dice "grafo diretto" un insieme di nodi legati "a due a due" da archi direzionati (puntatori) un albero è un grafo diretto in cui ogni nodo può avere un solo arco entrante ed un qualunque numero

Dettagli

Alberi Binari Alberi Binari

Alberi Binari Alberi Binari Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro

Dettagli

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.

Dettagli

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 8 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Alberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3

Alberi 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

Dettagli

Alberto Montresor Università di Trento

Alberto Montresor Università di Trento !! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata

heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

Implementazione ADT: Alberi

Implementazione 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

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Alberi radicati m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione

Dettagli

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 9 min-heap binario Heap e Alberi posizionali generali lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi 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

Dettagli

Alberi Binari di Ricerca

Alberi 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

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi 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

Dettagli

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.

Dettagli

Algoritmi e Strutture Dati. Alberi

Algoritmi e Strutture Dati. Alberi Algoritmi e Strutture Dati Alberi Alberto Montresor Università di Trento 2017/10/19 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE 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

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE 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

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI 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

Dettagli

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java Laboratorio Java Albero Binario GT 7.3 Esercitazione Sono dati : interfacce di Positio, Tree, e BinaryTree; il file TestLinkedBinaryTree.java e i file.class che implementano le interfacce www.dei.unipd.it/corsi/fi2ae

Dettagli

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 15 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO Il modificatore abstract Le classi

Dettagli

Implementazione con alberi binari di ricerca

Implementazione con alberi binari di ricerca public class LinkedBinaryTree implements BinaryTree { /** Espande una foglia in un nodo interno con due foglie come figli */ public void expandexternal(position v, E l, E r) throws InvalidPositionException

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this

Dettagli

Alberi. Alberi: Esempio di utilizzo

Alberi. 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

Dettagli

Alberi binari. Alberi Albero binario Heap tree

Alberi binari. Alberi Albero binario Heap tree Alberi binari Alberi Albero binario eap tree Albero Ogni nodo può avere un numero arbitrario di figli Un nodo senza figli viene detto foglia siste un nodo particolare chiamato radice, tutti gli altri hanno

Dettagli

algoritmi e strutture dati alberi binari di ricerca (BST)

algoritmi e strutture dati alberi binari di ricerca (BST) algoritmi e strutture dati alberi binari di ricerca (BST) concetto di chiave insieme di campi di un record che caratterizza l'intero record es.: {, , , , }

Dettagli

Esercitazione 6. Alberi binari di ricerca

Esercitazione 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)

Dettagli

Laboratorio di algoritmi e strutture dati

Laboratorio 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.

Dettagli

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati Visite di alberi binari Laboratorio di Algoritmi e Strutture Dati Visita di Alberi Gli alberi possono essere visitati (o attraversati) in diversi modi: Visita in Preordine: prima si visita il nodo e poi

Dettagli

Correzione prima esercitazione: metodo distinct

Correzione prima esercitazione: metodo distinct Alberi binari lezione 7 Correzione prima esercitazione: metodo distinct // post: ritorna il numero di elementi distinti del multi insieme public int distinct( ) { int d = 0; int i = 0; int j; // INV1:

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Visite di alberi m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati Visite di alberi binari Laboratorio di Algoritmi e Strutture Dati Visita di Alberi Gli alberi possono essere visitati (o attraversati) in diversi modi: Visita in Preordine: prima si visita il nodo e poi

Dettagli

Laboratorio di algoritmi e strutture dati

Laboratorio 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.

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 12 Grafi e visite di grafi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione Un grafo G=(V,E) consiste in: - un insieme V di vertici (o nodi) - un insieme

Dettagli

Algoritmi e Strutture Dati. Lezione 3

Algoritmi e Strutture Dati. Lezione 3 Algoritmi e Strutture Dati Lezione 3 www.iet.unipi.it/a.virdis Antonio Virdis antonio.virdis@unipi.it 1 Sommario Alberi Binari di Ricerca Gestione Stringhe Progettazione Esercizi 2 3 4 Alberi Binari 10

Dettagli

d. Cancellazione del valore 5 e. Inserimento del valore 1

d. 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

Dettagli

Alberi binari di ricerca

Alberi 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

Dettagli

Esercitazione 1. Possibile soluzione

Esercitazione 1. Possibile soluzione Esercitazione 1 1. Scrivere una classe Java BTreeNode per rappresentare nodi di alberi binari. Assumere che il contenuto informativo di ogni nodo sia rappresentato da un intero. 2. Fornire un implementazione

Dettagli

ALBERI. Un Albero. Un grafo aciclico che non è un albero: due archi entranti in uno stesso nodo

ALBERI. 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

Dettagli

Soluzioni della settima esercitazione di Algoritmi 1

Soluzioni della settima esercitazione di Algoritmi 1 Soluzioni della settima esercitazione di Algoritmi 1 Beniamino Accattoli 19 dicembre 2007 1 Grafi Un grafo è non orientato se descrivendo un arco come una coppia di vertici (i,j) l ordine è ininfluente

Dettagli

Alberi Binario in Java

Alberi 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

Dettagli

Informatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza

Informatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza Informatica 3 LEZIONE 17: Alberi generici Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza Informatica 3 Lezione 17 - Modulo 1 Definizione e ADT Introduzione

Dettagli

Esercitazione 5 Alberi Binari di Ricerca

Esercitazione 5 Alberi Binari di Ricerca Esercitazione 5 Alberi Binari di Ricerca Corso di Fondamenti di Informatica II Algoritmi e strutture dati A.A. 2015/2016 11 Maggio 2016 Sommario Scopo di questa esercitazione è realizzare una struttura

Dettagli

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

GLI 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

Dettagli

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill) Grafi: visite Una breve presentazione Visite di grafi Scopo e tipi di visita Una visita (o attraversamento) di un grafo G permette di esaminare i nodi e gli archi di G in modo sistematico Problema di base

Dettagli

ricerca di un elemento, verifica dell appartenenza di un elemento

ricerca 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,

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Alberi Binari

Dati e Algoritmi 1: A. Pietracaprina. Alberi Binari Dati e Algoritmi 1: A. Pietracaprina Alberi Binari 1 Definizione Un alberto binario T è un albero ordinato in cui Nota ogni nodo interno ha 2 figli ogni nodo non radice è etichettato come figlio sinistro

Dettagli

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Alberi. 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

Dettagli

Alberi. Cosa sono gli alberi? Strutture gerarchiche di ogni tipo. Definizione, realizzazione e algoritmi elementari. Generale.

Alberi. Cosa sono gli alberi? Strutture gerarchiche di ogni tipo. Definizione, realizzazione e algoritmi elementari. Generale. Alberi Definizione, realizzazione e algoritmi elementari Cosa sono gli alberi? trutture gerarchiche di ogni tipo Generale Colonnello Colonnello k Maggiore, Maggiore,m Capitano Maggiore k, Maggiore k,n

Dettagli

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi

Dettagli

ALBERI. Angelo Di Iorio Università di Bologna

ALBERI. Angelo Di Iorio Università di Bologna ALBERI Angelo Di Iorio Università di Bologna Esercizio 1 Implementare una classe Java per memorizzare e leggere informazioni relative a una dinastia Esempio nella prossima slide Per ogni persona: Nome

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione 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

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

In 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: [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

Dettagli

Alberi. 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 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,

Dettagli

GRAFI. Angelo Di Iorio Università di Bologna

GRAFI. Angelo Di Iorio Università di Bologna GRAFI Angelo Di Iorio Università di Bologna Esercizio 1 Implementare una classe Java per memorizzare e manipolare un grafo orientato di nodi di tipo T (usando il framework Generics) Applicazioni: rete

Dettagli

Esercizi proposti Risolvere i problemi seguenti su espressioni rappresentate come alberi binari, mediante la dichiarazione di tipo

Esercizi proposti Risolvere i problemi seguenti su espressioni rappresentate come alberi binari, mediante la dichiarazione di tipo Esercizi proposti 8 INDICZIONI DI CRTTERE GENERLE: Quando scrivete una funzione che ne utilizza una ausiliaria, chiedetevi sempre se l ausiliaria è necessaria, ricordando che è utile quando: (a) servono

Dettagli

Algoritmi e Strutture Dati. Alberi

Algoritmi e Strutture Dati. Alberi Algoritmi e Strutture Dati Alberi Alberto Montresor Università di Trento 2018/08/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

Dettagli

STRUTTURE DATI: OLTRE LE LISTE

STRUTTURE 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

Dettagli

Un heap binario è un albero binario con le seguenti caratteristiche:

Un heap binario è un albero binario con le seguenti caratteristiche: Heap Un heap binario è un albero binario con le seguenti caratteristiche: È quasi completo: tutti i livelli, tranna al più l ultimo sono completi e le foglie dell ultimo livello sono tutte adossate a sinistra.

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

CONCRETE (interne): è la effettiva implementazione della struttura nel linguaggio e relativa allocazione in memoria della struttura astratta

CONCRETE (interne): è la effettiva implementazione della struttura nel linguaggio e relativa allocazione in memoria della struttura astratta STRUTTURE DI DATI DINAMICHE Le strutture dati sono insiemi di dati caratterizzati dalle proprietà logiche e dalla loro forma di aggregazione (vettore, matrice, pila, coda ); le possiamo analizzare da un

Dettagli