Alberi
Un albero radicato è un digrafo aciclico con un insieme finito di nodi e archi .
Ogni nodo di un albero ha uno e un solo padre, eccetto per la radice :
Su questo tipo di dato ci si aspettano le operazioni:
padre(Tree P, Node v) -> Node | NIL
che assumev
presente inP
e restituisceNIL
se è radicefigli(Tree P, Node v) -> [Node]
che assumev
presente inP
Per esempio, con
si ha e che ha radice .
Caratteristiche
Tra i nodi sono definiti dei cammini da un nodo a , se: la cui lunghezza è il numero di archi , di conseguenza esisterà sempre un cammino lungo , i.e. da a .
Inoltre, tra le caratteristiche di un albero sono definite anche:
- Un nodo è detto foglia se
- Tutti i nodi che non sono foglie sono detti nodi interni
- Viene detto grado il numero di figli di un nodo
- I nodi con lo stesso padre sono detti fratelli
- Un nodo , nel cammino dalla radice a , è detto antenato di , mentre è il suo discendente
- Se è antenato di e allora è antenato proprio di , mentre discendente proprio
- Un sottoalbero di radice è formato dai discendenti di
- La profondità di un nodo è la lunghezza del cammino dalla radice a
- Un livello è l'insieme dei nodi con la stessa profondità
- L'altezza di un nodo è la lunghezza del cammino più lungo da ad una foglia
- L'altezza dell'albero è l'altezza della radice, che corrisponde alla profondità massima
Per esempio, con
si ha che:
- e sono nodi interni mentre , e sono foglie
- ha grado , altezza e profondità
- e sono antenati propri di , mentre è discendente di , e
- e hanno profondità , mentre profondità
- e come e sono fratelli
- è al livello , al livello e al livello
- , , e sono alcuni dei possibili cammini
- è sottoalbero con radice
Alberi -ari
Un albero si dice -ario se ogni nodo ha al più figli. È detto binario invece, se è vuoto o possiede ricorsivamente un sottoalbero binario sinistro e uno destro, ovvero figli.
Un albero -ario è definito bilanciato se l'altezza .
Se è bilanciato, viene anche detto completo se ogni foglia ha la stessa profondità e ogni nodo ha grado .
Per esempio, l'albero
è -ario perchè ha che è al minimo , bilanciato ma non completo.
Numero di nodi
Si può dimostrare che, se l'albero è -ario completo con altezza , il numero di foglie sarà: per induzione su :
- Caso base: per ci sono foglie, cioè la radice
- Passo induttivo: si assume che sia il numero foglie dell'albero alto , allora dato che ogni sua foglia ha a sua volta foglie, per ipotesi induttiva
da cui si ricava che l'altezza sarà .
Inoltre, si può anche derivare che il numero di nodi interni è: cioè la somma del numero di foglie per altezza crescente.