Index
Related
Applicazione delle visite
Le visite sono estremamente utili per ispezionare l’albero e dedurne delle proprietà.
A seconda delle proprietà che si vuole esaminare pò essere più utile una delle tre visite considerate
Esempi:
Conta Nodi
Conta il numero di nodi presenti nell’albero binario rappresentato tramite puntatori.
Funzionamento
- Se è vuoto (cioè,
p == None
), ritorna0
e termina la funzione (caso base della ricorsione).- Se l’albero non è vuoto
- Chiama ricorsivamente la funzione
contaNodi(p.left)
per contare il numero di nodi nel sottoalbero sinistro.- Aggiunge
1
al conteggio per includere il nodo corrente.- Chiama ricorsivamente la funzione
contaNodi(p.right)
per contare il numero di nodi nel sottoalbero destro.- Somma i conteggi dei sottoalbero sinistro e destro e del nodo corrente, e ritorna il totale.
oss: si basa sulla visita inorder.
Cerca
Di se una determinata valore è presente all’intero di un albero
Versione prof
Funzionamento
La funzione controlla prima se l’albero è vuoto. Se è vuoto, ritorna False. Se il nodo corrente è uguale a x, ritorna True. Altrimenti, cerca l’elemento x nei sottoalbero sinistro e destro, chiamando se stessa ricorsivamente. Se l’elemento x è presente in uno dei sottoalbero, la funzione ritorna True. Altrimenti, ritorna False.
oss: si basa sulla visita preorder.
Calcolo Altezza
Stabilire l’altezza di un albero binario, nota bene, se l’albero è vuoto ritornare -1, sel’ albero ha un solo elemento (la radice) l’altezza è 0.
Funzionamento
- Controlla se l’albero è vuoto (cioè,
p == None
). Se è vuoto, ritorna-1
. Questo è il caso base della ricorsione.- Se l’albero non è vuoto, chiama ricorsivamente la funzione
altezza(p.left)
per calcolare l’altezza del sottoalbero sinistro ealtezza(p.right)
per calcolare l’altezza del sottoalbero destro.- Prende il massimo tra le altezze dei sottoalbero sinistro e destro. Questo è perché l’altezza di un albero è determinata dal sottoalbero più alto.
- Aggiunge
1
al massimo delle altezze dei sottoalbero. Questo1
rappresenta il bordo tra il nodo corrente e il sottoalbero più alto.- Ritorna il risultato.
Attenzione al caso 0
Se l’albero ha un solo nodo, sia
p.left
chep.right
sarannoNone
. Quindi, le chiamate ricorsive aaltezza(p.left)
ealtezza(p.right)
ritorneranno entrambe-1
. La funzionemax
restituirà-1
, e l’aggiunta di1
darà0
, che è l’altezza corretta per un albero con un solo nodo.Quindi, la funzione
altezza
restituirà0
per un albero con un solo nodo, come previsto.
Conta Livello
Stabilire il numero di nodi presenti a un determinato livello (ricorda che la radice è a livello zero)
Funzionamento
- Se
k
è0
, significa che siamo al livello della radice dell’albero, quindi ritorna1
(perché c’è esattamente un nodo, la radice, a questo livello).- Se
p
èNone
, significa che abbiamo raggiunto un punto dell’albero dove non ci sono più nodi (un “albero vuoto”), quindi ritorna0
(non ci sono nodi a questo livello).- Altrimenti, fa due chiamate ricorsive alla funzione
contaLiv
: una per il sottoalbero sinistro (p.left
) e una per il sottoalbero destro (p.right
), entrambe conk-1
. Questo perché quando scendiamo di un livello nell’albero, dobbiamo ridurrek
di1
.- Infine, somma i risultati delle due chiamate ricorsive e ritorna il totale. Questo totale rappresenta il numero totale di nodi al livello
k
nell’albero.