![]() ![]() |
|
Per realizzare gli alberi binari in Java utilizziamo la classe BinNode<E>,
i cui oggetti rappresentano i nodi di un albero. Ogni nodo contiene:
Graficamente un oggetto di BinNode viene rappresentato come segue:
La figura sotto mostra la rappresentazione
dell'albero binario del lucido
precedente, dove i nodi sono visti come oggetti di
BinNode. Le frecce rappresentano
riferimenti, null è rappresentato da un cerchietto,
l'oggetto nel campo key è impropriamente riportato
direttamente dentro il nodo.
|
![]() ![]() |
|
La classe BinNode contiene due costruttori che permettono la creazione di un
BinNode specificando
come inizializzare uno o più campi.
|
![]() ![]() |
|
I costruttori di BinNode<E>
permettono di costruire un albero binario "dal basso", a partire dalla foglie.
Ad esempio, dopo i comandi
la variabile D
contiene il riferimento all'albero:
|
![]() ![]() |
|
Visitare
un albero significa esaminare sequenzialmente tutti i suoi nodi. Ci sono tre tipi principali di visite:
Il seguente metodo statico realizza la visita in ordine anticipato, stampando tutti i nodi dell'albero passato per argomento. Si noti che la struttura dell'algoritmo riflette la definizione ricorsiva degli alberi binari.
Le altre due visite si ottengono modificando l'ordine delle tre istruzioni del caso ricorsivo. |
![]() ![]() |
|
Il metodo seguente stabilisce se un certo oggetto
appartiene o meno ad un dato albero binario, usando una visita in ordine
anticipato. Si noti che:
|
![]() ![]() |
|
Come ultimo esempio di algoritmo su alberi binari, vediamo un metodo che conta le foglie dell'albero passato per parametro.
Lo schema è il solito:
|
![]() ![]() |
|
![]() ![]() |
1) Realizzare il metodo
che restituisce il numero di nodi interni dell'albero la cui radice è r.
Un nodo interno è un nodo che ha almeno un figlio. 2) Realizzare il metodo
che restituisce l'altezza dell'albero binario r .
L' altezza è la massima distanza radice-foglia, contando sia il nodo di partenza che il nodo di arrivo, (0 se l'albero è vuoto, 1 se contiene la sola radice). 3) Realizzare il metodo
che restituisce il numero di nodi presenti al livello l nell'albero r. (Si assuma che la radice sia al livello 0). |