Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorico-Pratica

Algoritmi di Visita degli Alberi

Esplorazione sistematica dei nodi tramite DFS (Depth-First Search: Pre-order, In-order, Post-order) e BFS (Breadth-First Search).

1. Strategie di Visita in Profondità (DFS)

Le visite basate sulla profondità sfruttano la ricorsione (o uno stack esplicito) per esplorare i rami dell'albero il più in fondo possibile prima di fare ritorno. Si dividono in tre varianti a seconda del momento in cui viene elaborata la radice:

void preOrder(Node* root) { if (root == NULL) return; cout << root->data << " "; // Elabora radice preOrder(root->left); // Visita sinistra preOrder(root->right); // Visita destra }

2. Visita in Ampiezza (Level-Order / BFS)

A differenza delle visite DFS, la visita per livelli esplora l'albero procedendo orizzontalmente livello per livello, partendo dalla radice fino alle foglie. Richiede l'uso di una struttura dati ausiliaria di tipo Coda (Queue) basata sulla politica FIFO (First-In, First-Out).

Confronto Complessità Spaziale:

DFS (Stack di ricorsione): $\mathcal{O}(h)$ dove $h$ è l'altezza dell'albero.
BFS (Coda ausiliaria): $\mathcal{O}(w)$ dove $w$ è la massima ampiezza dell'albero.

3. Simulatore Interattivo: Selettore di Visita

Seleziona il tipo di algoritmo di visita per generare l'ordine di attraversamento sull'albero campione.

traversal-engine@nexus-core:~# Tree Traversal Simulator
> Albero di test caricato: Radice [40], Sottoalberi [20, 60, 10, 30, 50, 70]. Seleziona una modalità e avvia la visita.