Home Insegnanti Contattami Portfolio

Alberi

0️⃣ Definizione

Albero (informatica)
In informatica, un albero o struttura ad albero (tree in inglese) è la struttura dati che si riconduce al concetto di albero con radice presente nella teoria dei grafi. Un albero si compone di due tipi di sottostrutture fondamentali: il nodo, che in genere contiene informazioni, e l'arco, che stabilisce un collegamento gerarchico fra due nodi: si parla allora di un nodo padre dal quale esce un arco orientato che lo collega ad un nodo figlio.
https://it.wikipedia.org/wiki/Albero_(informatica)

In informatica, un albero o struttura ad albero (tree in inglese) è la struttura dati che si riconduce al concetto di albero con radice presente nella teoria dei grafi. Un albero si compone di due tipi di sottostrutture fondamentali: il nodo, che in genere contiene informazioni, e l'arco, che stabilisce un collegamento gerarchico fra due nodi: si parla allora di un nodo padre dal quale esce un arco orientato che lo collega ad un nodo figlio.

L'unico elemento privo di arco ascendente Ia radice dell'albero, mentre gli elementi privi di archi discendenti sono Ie foglie.

1️⃣ Alberi generici

Un albero è un insieme non vuoto di nodi e di archi tale che sia:

Per percorso semplice si intende una sequenza di coppie di nodi distinti collegate da un arco che rappresenta un cammino sugli archi dell'allbero.

rappresenta un albero in cui è evidenziato il percorso semplice (d, a), (a, b), (b, g) dal nodo d al nodo g passando per i nodi a e b

Alcune definizioni

  1. Nodo padre: Un nodo padre è un nodo che ha almeno un nodo figlio collegato ad esso. In altre parole, è un nodo che si trova ad un livello superiore rispetto ad uno o più nodi figli nella gerarchia dell'albero.
  1. Nodo figlio: Un nodo figlio è un nodo che ha un nodo padre collegato ad esso. Ogni nodo figlio si trova ad un livello immediatamente inferiore rispetto al suo nodo padre nella gerarchia dell'albero.
  1. Foglia: Una foglia è un nodo che non ha nodi figli collegati ad esso. In altre parole, è un nodo terminale che non si ramifica ulteriormente. Le foglie sono i nodi finali o estremi nell'albero.
  1. Radice: La radice è il nodo superiore nell'albero da cui si diramano tutti gli altri nodi. È l'unico nodo che non ha un nodo padre. Ogni albero ha una sola radice.
Il nodo b è il padre dei nodi e, f, e g; il nodo c è padre dei nodi h e i; il noo d è padre del nodo i; il nodo a è padre dei nodi b, c e d. I nodi e, f, g, h, i ed l sono le foglie dell'albero.

Altre Definizioni

  1. Profondità: La profondità di un nodo in un albero rappresenta la lunghezza del percorso dal nodo radice a quel nodo specifico. In termini semplici, la profondità indica il livello a cui si trova un nodo all'interno della struttura gerarchica dell'albero. La radice ha una profondità di 0, mentre ogni livello successivo aumenta la profondità di 1.
  1. Livello: Il livello di un nodo in un albero indica la distanza tra quel nodo e la radice dell'albero. La radice si trova al livello 0, i nodi direttamente collegati alla radice sono al livello 1, i loro nodi figli sono al livello 2 e così via. In pratica, il livello di un nodo è determinato dalla lunghezza del percorso che collega il nodo alla radice.
  1. Sottoalberi: Un sottoalbero è una porzione dell'albero che deriva da un nodo e include quel nodo e tutti i suoi discendenti. In altre parole, un sottoalbero è formato da un nodo (chiamato radice del sottoalbero) e da tutti i nodi che hanno come nodo padre un nodo appartenente al sottoalbero. Ogni nodo in un albero può avere uno o più sottoalberi associati ad esso.

Ogni nodo dell'albero ha tre componenti:

  1. Info (componente informativa);
  1. pfc (pointer first child, riferimento al primo figlio);
  1. pfs (pointer first sibling. riferimento al primo fratello).

2️⃣ Alberi Binari

Albero binario
In informatica un albero binario è un albero i cui nodi hanno grado compreso tra 0 e 2. Per albero si intende un grafo non diretto, connesso e aciclico mentre per grado di un nodo si intende il numero di sotto alberi del nodo, che è uguale al numero di figli del nodo.
https://it.wikipedia.org/wiki/Albero_binario

Gli alberi binari estendono le caratteristiche degli alberi generici, in particolare: un albero binario (BT, Binary Tree) un albero in cui nodo ha al massuno due figli, denominati rispettivamente figlio sinistro e figlio destro.

Un albero binario di ricerca si dice bilanciato se l'albero stesso e ogni suo sottoalbero hanno un numero di nodi presenti nel sottoalbero sinistro che differisce al più di 1 dal numero di nodi del sottoalbero destro.
In un albero binario di ricerca bilanciato con n nodi la profondità di una foglia, cioé la sua distanza dalla radice, è al massimo:

log 2 ( n ) \log_2 (n)

Visualizzazione Grafica

Binary Tree Visualizer
The best online platform for creating and customizing rooted binary trees and visualizing common tree traversal algorithms.
https://tree-visualizer.netlify.app/

Implementazione

Introduction to Binary Tree - Data Structure and Algorithm Tutorials - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
https://www.geeksforgeeks.org/introduction-to-binary-tree-data-structure-and-algorithm-tutorials/

Visita dell'albero

Tree Traversal Techniques - Data Structure and Algorithm Tutorials - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/

Le classiche tipologie di algoritmi per la visita dei nodi di un albero sono: