Visita di un albero binario

miuemia
ciao a tutti...
vorrei sapere l'algoritmo per visitare un albero binario in ampiezza(per livelli) in linguaggio c++.
io ho definito la struttura nodo cosi

typedef struct nodo{
int inf;
struct nodo *albsin;
struct nodo *albdes;
}

grazie per l'aiuto...
ciao

Risposte
Rael1
Guarda, per la visita BFS, prendi la radice, e poi metti in una queue i nodi connessi al nodo che stai visitando (hai preso), poi prelevare dalla coda un nodo, e ripetere l'operazione finchè la coda non è vuota in modo da tenere una struttura FIFO, invece della classica lifo dello stack e della ricorsione...

Poi se posso permettermi un commento il typedef davanti alla struct secondo me non è molto utile ... prova a creare direttamente una classe nodo, con costruttore e distruttore ... più carino, cmq si possono appizzare queste funzioni anche nella struct.

luciano791
è da almeno un anno che non uso c++, correggetemi se sbaglio
dovrebbe essere una ricorsiva

...
ScorriAlbero(Key); //dove Key è il puntatore al primo nodo dell'albero (la chiamo chiave, non ricordo il vero nome tecnico)
...

void ScorriAlbero(Nodo* p)
{
	if(p->Albsin!=NULL)
		ScorriAlbero(p->Albsin);

//      Qui inserisci i comandi per leggere il contenuto del nodo (se contiene altri campi) e se necessario salva in strutture lineari o files

	if(p->Albdes!=NULL)
		ScorriAlbero(p->Albdes);
}


tutto qui :-)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.