• Non ci sono risultati.

Algoritmi e Strutture Dati A-L. Informatica Esercitazione 3

N/A
N/A
Protected

Academic year: 2021

Condividi "Algoritmi e Strutture Dati A-L. Informatica Esercitazione 3"

Copied!
2
0
0

Testo completo

(1)

Algoritmi e Strutture Dati A-L. Informatica Esercitazione 3

1 marzo 2007

1 Esercizio sugli alberi binari

Si consideri una nuova operazione degli alberi binari che, dato un albero binario T con- tenente elementi interi, lo modifica cancellando ogni foglia che contiene un elemento pari. Si scriva una procedura Pascal di complessità ottima assumendo che l’abero sia realizzato con puntatori.

Soluzione:

procedure cancellafoglie(var T:albero; u:nodo);

Begin

if (u^.destro = nil) and (u^.sinistro = nil) and (u^.valore mod 2 = 0) then begin

if u^.genitore = nil the T:=nil

else if u^.genitore^.sinistro = u then u^.genitore^.sinistro := nil else u^.genitore^.destro := nil;

dispose(u) end

else begin

if u^.sinistro <> nil then cancellafoglie(T, u^.sinistro);

if u^.destro <> nil then cancellafoglie(T, u^.destro) end

End;

complessità: O(n)

Nel file cancellafoglie.pas contenuto in codice4.tgz è possibile trovare una soluzione basata sugli operatori del libro di testo.

2 Visite iterative

Utilizzando le pile, si scrivano tre procedure Pascal iterative di complessità ottima per effettuare, rispettivamente, le visite anticipata, differita e simmetrica di un albero binario. (es. 4.13 pag 79)

Soluzione: la visita anticipata si ottiene banalmente inserendo in una pila i figli del nodo attualmente visitato (e stampato a video). Per quanto riguarda le visite differite e

1

(2)

simmetriche è necessario aumentare la struttura dati della pila aggiungendo un’infor- mazione di “visitato” ai nodi inseriti. La visita differita e simmetrica si differenziano tra loro per l’ordine di inserimento in pila dei nodi.

3 Visite di alberi binari

L’esercizio 4.10 a pagina 79 del libro di testo richiede:

“Dato un albero binario i cui nodi contengono interi, si vuole aggiungere ad og- ni foglia un figlio contenente la somma dei valori che appaiono nel cammino dalla radice a tale foglia. Si scriva una procedura Pascal ricorsiva di complessità ottima assumendo che l’albero sia realizzato con puntatori”.

Soluzione: es 4-10.pas contenuto in codice4.tgz

2

Riferimenti

Documenti correlati

L Insertion Sort è uno algoritmo di ordinamento molto efficiente per ordinare un piccolo numero di elementi. L idea di ordinamento è quella che potrebbe usare un persona

In aggiunta ai “tipi” predefiniti dal linguaggio il programmatore può definire dei nuovi tipi, come vedremo in seguito questo risulta molto comodo lavorando con i puntatori e

È evidente come possa essere facilmente realizzata una soluzione algoritmicamente molto più elegante: listareverse2.pas: in questo caso l’inserimento invece che avvenire in coda

Si progettino un algoritmo euristico di tipo greedy ed uno di ricerca locale per risolvere il problema della BISEZIONE in forma di ottimizzazione: “Dato un grafo non orientato G =

Si scriva una procedura Pascal, basata sulla ricerca binaria, per individuare in tempo O(log n) l’unico intero dell’intervallo 1..n+1 che non compare in V.... Si scriva

152, sezione 8.3, secondo paragrafo: sostituire la frase “Si usano questa volta tre variabili per scandire A, B e C” con “Si usano questa volta due variabili per scandire A e B..

– Alan Bertossi, Alberto Montresor, Algoritmi e strutture di dati Terza Edizione, 2014, Città Studi,

il ciclo precedente deve continuare fino a quando non sia stata scorsa tutta la lista, così da preservare l’ordinamento interno delle sequenze pari e dispari Come preannunciato il