Visita di un albero binario
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
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
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.
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.
è da almeno un anno che non uso c++, correggetemi se sbaglio
dovrebbe essere una ricorsiva
tutto qui
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
