visita di un albero binario

Messaggioda miuemia » 26/09/2005, 08:12

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
miuemia
Senior Member
Senior Member
 
Messaggio: 13 di 1706
Iscritto il: 23/05/2005, 16:23
Località: Italy

Messaggioda Rael » 26/09/2005, 20:38

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.
Rael
New Member
New Member
 
Messaggio: 81 di 87
Iscritto il: 08/10/2004, 21:23
Località: Italy

Messaggioda luciano79 » 15/11/2005, 16:23

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

Codice:
...
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 :-)
luciano79
New Member
New Member
 
Messaggio: 7 di 53
Iscritto il: 14/11/2005, 16:33


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite