• Non ci sono risultati.

EXE su alberi binari di ricerca e ordinamento

N/A
N/A
Protected

Academic year: 2021

Condividi "EXE su alberi binari di ricerca e ordinamento"

Copied!
4
0
0

Testo completo

(1)

EXE su alberi binari di ricerca e ordinamento

INFORMATICA III

Parte B - Progettazione e Algoritmi

Patrizia Scandurra [email protected]

Università degli Studi di Bergamo a.a. 2011-12

(2)

Esercizi (parte 1)

Procurarsi la cartella src_BST di codice fornita a lezione

http://cs.unibg.it/scandurra/material/INF3B_1112/lezione4.zip , e svolgere:

1. Arricchire l’interfaccia AlberoBinario e la classe AlberoBinarioImpl con la seguente operazione: public boolean isBST(AlberoBinario T); che verifica se un dato albero binario soddisfa la proprietà di ricerca degli alberi binari di ricerca

2. Arricchire la classe AlberoBR (che implementa un albero binario di ricerca) con i metodi per la ricerca del predecessore e

successore di un nodo (vedi pseudocodice fornito a lezione).

3. Definire la classe AlberoBRConDuplicatiInLista come estensione di AlberoBR per mantenere i duplicati (elementi distinti ma di chiavi uguali) in una lista contenuta in un nodo (cioè il campo elem di un nodo conterrà una lista di Record e non un record solamente). Ridefinire, quindi, la struttura dell’albero e le

operazioni di inserimento, ricerca e cancellazione in modo tale che riflettano la nuova rappresentazione dei dati. 2

(3)

4. Si definisce Interval Tree un albero binario di ricerca in cui:

– gli elementi sono intervalli [a, b], con a e b sulla retta reale;

– la chiave di un elemento [a, b] è l’estremo sinistro a dell’intervallo;

– non possono esistere intervalli annidati [a, b] e [c, d] con c<=a e b<=d.

Ad esempio,l’Interval Tree costruito a partire dall’albero vuoto inserendo in ordine [9, 12], [4, 7], [17, 18], [1, 3], [8, 10], [14, 16], [20, 21], [2, 4], [13, 15] è:

Si definisca lo pseudocodice di un algoritmo efficiente che, dato un intervallo [a,b] e un Interval Tree T, determina se [a, b] può essere inserito in T, ovvero se non esiste in T un intervallo che contiene interamente [a, b] o che è contenuto interamente in [a, b].

Qual è la complessità dell’algoritmo? 3

(4)

Esercizi (parte 2)

Procurarsi la cartella src_Ordinamento della lezione

http://cs.unibg.it/scandurra/material/INF3B_1112/lezione5.zip e svolgere:

1. Implementare gli algoritmi di ordinamento elementari

InserionSort e SelectionSort in modo iterativo traducendo lo pseudocodice fornito nei lucidi a lezione in Java

2. Implementare in Java gli algoritmi di ordinamento elementari InserionSort e SelectionSort in modo RICORSIVO, impostare poi un'equazione di ricorrenza che descriva il tempo di esecuzione e risolverla per iterazione e poi per sostituzione.

3. Implementare e testare in Java l'algoritmo lineare BucketSort per ordinare oggetti Persona in base al mese del loro compleanno.

4. Confrontare in modo sperimentale in Java un algoritmo elementare, uno avanzato ed uno lineare

4

Riferimenti

Documenti correlati

• In un albero binario la profondità di un nodo è la lunghezza del percorso dalla radice al nodo (cioè il numero di archi tra la radice e il nodo). • L’altezza dell’albero

costruire un albero binario di ricerca Marco Lapegna – Laboratorio di Programmazione 2 Cenni agli alberi. procedura ricerca(in: radice, e;

• Nella rappresentazione basata sui nodi ogni nodo di un albero binario avrà due riferimenti a ciascuno dei figli (Left e Right). In alcune implementazioni si può avere anche

L’albero risultante dovr avere la seguente propriet` a: per ogni nodo u dell’albero, tutti i nodi nel sottoalbero sinistro hanno chiave maggiore della chiave di u e tutti i nodi

Scrivere un programma che legga da tastiera una sequenza di n interi NON distinti e li inserisca senza duplicati in una tabella hash di dimensione 2n posizioni utilizzando

Scrivere un programma che legga da tastiera una sequenza di N interi di- stinti e li inserisca in un albero binario di ricerca (senza ribilanciamento).. Il programma deve

Dato un albero binario i cui nodi sono colorati di rosso o di nero, progettare un algoritmo efficiente che calcoli il numero di nodi aventi lo stesso numero di discendenti rossi

Scrivere una funzione che prende in input un albero binario e restituisce in output una stampa dell’albero in notazione a parentesi, come visto nella prima sezione.. F Scrivere