• Non ci sono risultati.

ESERCIZI (alberi binari, alberi binari di ricerca, dizionari)

N/A
N/A
Protected

Academic year: 2021

Condividi "ESERCIZI (alberi binari, alberi binari di ricerca, dizionari)"

Copied!
1
0
0

Testo completo

(1)

ESERCIZI (alberi binari, alberi binari di ricerca, dizionari)

1. Si consideri un array S di n chiavi intere.

• Si dia il codice di un algoritmo che con un’unica scansione di S conti il numero r di chiavi distinte in S. Usare un dizionario D inizialmente vuoto (non interessa l’implementazione di D).

• Facendo l’assunzione che D sia implementato come un array ordinato, si analizzi la complessit`a in funzione di n e del numero r di chiavi distinte.

2. Data una tabella hash T in cui le collisioni sono risolte con il concatenamento, definire una procedura di ricerca di una chiave che sposti la chiave cercata, se presente nella tabella, in testa alla propria lista di trabocco.

3. Si dimostri che in un albero binario il numero di puntatori left e right uguali a NIL `e uguale a uno pi`u il numero totale di nodi dell’albero.

4. Dato un albero binario di ricerca T , progettare e descrivere in pseudocodice un algoritmo efficiente che, per ogni nodo u dell’albero, stampi la chiave di u e la chiave di valore minimo del sottoalbero di cui u `e radice. Analizzare la complessit`a dell’algoritmo proposto.

5. Progettare un algoritmo per trasformare un array ordinato di n interi distinti in un albero binario di ricerca che sia il pi`u bilanciato possibile, in tempo O(n). Valutare esplicitamente la complessit`a dell’algoritmo proposto.

6. Dato un intervallo [a, b] e un albero binario di ricerca, progettare un algoritmo efficiente per stampare in ordine crescente le chiavi k ∈ [a, b].

7. Dato un albero binario di ricerca T di n nodi, progettare un algoritmo che restituisca un array ordinato contenente le chiavi memorizzate nei nodi di T .

8. Un albero binario completo `e un albero in cui ogni nodo interno ha esattamente due figli. Sia T un albero binario completo. Dato un nodo v ∈ T si definisca imbalance(v) la differenza in valore assoluto tra il numero di foglie nei sottoalberi sinistro e destro di v (se v `e una foglia imbalance(v)=0). Si definisca anche imbalance(T ) = maxv∈T imbalance(v).

• Dimostrare un limite superiore all’imbalance di un albero binario completo con n nodi, e descrivere un albero il cui imbalance raggiunge tale limite.

• Disegnare un albero binario completo T in cui imbalance(T ) = imbalance(v) e v non `e la radice dell’albero.

• Si progetti un algoritmo efficiente per determinare imbalance(T ) e analizzarne la complessit`a in tempo.

9. Dato un albero binario T , i cui nodi sono colorati di bianco, rosso o verde, progettare un algoritmo efficiente che stabilisca se esiste un cammino di tre nodi in T i cui colori formano la bandiera italiana.

(Il cammino pu`o partire da un nodo qualsiasi, non necessariamente dalla radice.)

10. 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 e neri. (Un nodo `e discendente di se stesso.)

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

L’albero a) pu`o rispettare le propriet`a, colorando di rosso il nodo 3 e di nero tutti gli altri. L’albero b) non pu`o essere colorato, in quanto ha un cammino radice-foglia di 5

LEONI

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

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

Un sistema costituito da 0, 08 moli di gas perfetto biatomico percorre in senso orario un ciclo reversibile composto da due trasformazioni adiabatiche e