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 assume v presente in P e restituisce NIL se è radice
  • figli(Tree P, Node v) -> [Node] che assume v presente in P

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.