Esercitazione su Albero Binario

Documenti analoghi
Alberi binari ( 7.3)

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 GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

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

Implementazione ADT: Alberi

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

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

Implementazione con alberi binari di ricerca

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

Strutture dati Alberi binari

Alberi ed Alberi Binari di Ricerca

Bilanciamento Alberi Binari di Ricerca

ALBERI. Angelo Di Iorio Università di Bologna

Alberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza

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

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

Esercitazione 6. Alberi binari di ricerca

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

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

Laboratorio 9 ( Java 4 ) Classe astratta per BFS su grafo

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

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

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

Alberi ed Alberi Binari

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca

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

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

alberi tipo astratto, implementazione, algoritmi

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

Alberi Binari Alberi Binari

Esercitazione 5 Alberi Binari di Ricerca

ALGORITMI E STRUTTURE DATI

Alberi binari di ricerca

ricerca di un elemento, verifica dell appartenenza di un elemento

Binary Search Trees (BST) Algoritmi sui BST. Algoritmi - Ricerca. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A.

Binary Search Trees (BST)

Dati e Algoritmi 1: A. Pietracaprina. Alberi Binari

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati

Esercizi su programmazione ricorsiva 3

IMPLEMENTAZIONE DI UN ALBERO AVL

7. Settima esercitazione autoguidata: alberi binari

ADT albero binario completo

Correzione prima esercitazione: metodo distinct

Binary Search Trees ( 10.1)

Per semplicità eliminiamo le ripetizioni nell'albero.

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

Alberi. Alberi: Esempio di utilizzo

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE

algoritmi e strutture di dati

Alberi binari di ricerca

Interfaccia del TDA albero

Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche:

Alberi Binario in Java

Algoritmi e Strutture Dati

Alberi Binari di Ricerca: Definizione. Ricerca, inserimento, cancellazione, min, max, predecessore, successore.

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Lezione 12 Tabelle Hash

Lezione 7 Alberi binari: visite e alberi di ricerca

tipi di dato astratti

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

Algoritmi e Strutture Dati. Lezione 3

Esercizi parte 3. La classe ArrayBinTree dovra implementare, tra le altre, l operazione seguente: padre: dato un nodo, restituire l indice del padre.

Implementazione dell albero binario in linguaggio C++

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

Verificare se un albero binario è bilanciato

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

lezione 9 min-heap binario Heap e Alberi posizionali generali

Attraversamento di un albero (binario)

Alberi binari di ricerca

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Laboratorio di algoritmi e strutture dati

Divide et impera su alberi

Struttura dati Dizionario

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

Prossime lezioni e tutorato!

Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg.

Gerarchie e polimorfismo: liste

Alberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

Lezione 10 Alberi e gestione delle eccezioni

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

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

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

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

Laboratorio di Algoritmi e Strutture Dati. Alberi Binari

Alberi Binari di Ricerca e Alberi Rosso-Neri

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

Dizionari. Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Ugo de' Liguoro - Algoritmi e Seprimentazioni 03/04 Lez.

Le liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5

Ripasso di programmazione ricorsiva

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

Transcript:

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 Scaricare il file lab_java.zip, scompattarlo ed analizzare le classi in esso contenute con particolare attenzione alla classe BinarySearchTree Per poter utilizzare la classe BinarySearchTree (vedi costruttore) è necessario fornire un oggetto di tipo Comparator. A tale scopo scrivere in Java l'implementazione della classe MyComparator che implementi l'interfaccia Comparator di Java : public class MyComparator<K extends Integer> implements java.util.comparator<k> {/*.... */ } public int compare(k a, K b) {/*.... */ }

Esercitazione su Albero Binario Scrivere un classe con un metodo main per creare un oggetto di tipo BinarySearchTree<Integer,String> e provare ad inserire alcune coppie formate da chiave di tipo Integer e valore di tipo String Dotare la classe BinarySearchTree del metodo public Iterator preorderpositions() {/*... */} che ritorna un Iteratore sulle posizioni dell'albero binario di ricerca (Vedi codice in commento alla fine del file BinarySearchTree.java) Tale iteratore deve essere implementato con la classe PreorderPositionIterator di seguito schematizzata classe PreorderPositionsIterator class PreorderPositionIterator<E> implements java.util.iterator { private BinaryTree<E> T; //binary tree private Position<E> cur; //current position PreorderPositionIterator ( BinaryTree<E> T ) { // INSERIRE IL CODICE } public boolean hasnext() { // INSERIRE IL CODICE } public Position<E> next() { // INSERIRE IL CODICE } public void remove() { } } //class

Albero Binario preorder Algorithm preorder(v) visit(v) if hasleft (v) preorder (left (v)) if hasright (v) preorder (right (v)) 7 8 9 5 6 5 Successore nel preordine di un dato nodo il primo nodo visitato è la radice se esiste il sottoalbero sinistro, il successore è la radice del sottoalbero sinistro altrimenti, se esiste il sottoalbero destro, il successore è la radice del sottoalbero destro altrimenti risale finché è figlio destro; poi, se non è radice, passa al fratello destro 7 8 9 5 6 6

Successore nel preordine di un dato nodo attuale succ.re sin des già visitato attuale succ.re des 7 Successore nel preordine di un dato nodo già visitato già visitato succ.re già visitato attuale 8

Albero Binario -preordine 6 8 7 8 7 9 9 5 6 0 5 0 9 Ulteriori esercizi - Albero speculare 5 75 60 87 55 65 5 75 87 60 65 55 0 5

Ulteriori esercizi Visita per livelli usare una coda : Q.inserisci(radice) while ( Q non vuota ) nod = Q.estrai() inserisci in Q i figli di nod, se ci sono,.... 5 75 60 87 55 65 Ulteriori esercizi Costruttore di Copia Nuovo costruttore per la classe BinarySearchTree public BinarySearchTree ( BinarySearchTree<E> T ) { } N.B. : duplica tutti i nodi 5 75 60 87 55 65 6

Ulteriori esercizi Rotazioni Rotazione destra Y X X Y γ α α β α x β y γ β γ Ulteriori esercizi Rotazioni Rotazione destra Y X X Y γ α α β α x β y γ β γ 7

Ulteriori esercizi Rotazione di nodi void rightrotate( Position x ) { // RIGHT-ROTATE Position y = parent(x); setleftchild( y, rightchild(x) ); setparent( rightchild(x), y ); if ( isroot(y) ) { setroot(x); setnullparent(x); } else if ( onleft(y) ) { setleftchild( parent(y), x ); setparent( x, parent(y) ); } else { setrightchild(parent(y), x ); setparent( x, parent(y) ); } setrightchild(x,y); setparent(y,x); return; } 5 8