PDA

Visualizza la versione completa : visita con iteratori(c++)


bugino88
18-11-2010, 12:49
ciao a tutti.

Ho implementato la visita di un albero di interi con gli iteratori.
Solo che ho un bel pò di problemi xke molto probabilmente sbaglio ad utilizzarli

qualcuno a qualche idea?

grazie per l'aiuto!

MdE2005
18-11-2010, 13:12
Originariamente inviato da bugino88
ciao a tutti.

Ho implementato la visita di un albero di interi con gli iteratori.
Solo che ho un bel pò di problemi xke molto probabilmente sbaglio ad utilizzarli

qualcuno a qualche idea?

grazie per l'aiuto!

Benvenuto nel forum di HTML.it :)

E' palese che non possiamo rispondere a domande così poste e descritte: che tipo di problemi hai? Errori riscontrati? Se sì, quali? Non ti riesce fare qualcosa in particolare?
Hai già scritto del codice? Se sì, perchè non lo posti? (nei tag CODE, mi raccomando).

Come vedi la tua richiesta è incompleta, cerca di aggiungere molti più dettagli.


Ciao :)

bugino88
18-11-2010, 15:13
Scusa è vero hai ragione.
Non ho specificato niente.
Allora sto implemantando un albero binario di ricerca in c++.
Oltre ai solito metodi(add, search, remove ecc) che funzionano, devo fare il metodo della visita postOrder(o anche inOrder o preOrder a scelta).
Ho scelto la postOrder.

Ho fatto la classe const_iterator con i relativi metodi per poter utilizzare l'iteratore.

Chiusa la classe const_iterator ho fatto:



const_iterator begin() const{
return const_iterator(root);
}

const_iterator end() const{
while(true){
root = root.right;
}
return const_iterator(root);
}

template <class T> void visitaPostOrder(Node<T>* nodo, const_iterator i){
visitaPostOrder(nodo, i--);
visitaPostOrder(nodo, i++);
cout << nodo->key << endl;
}



nel main invece come test per la visita lo faccio in questo modo


template <class T> void visitaAlbero_Const(AlberoBinario<T> &nodo){
typename AlberoBinario<T>::iterator postOrder = postOrder = albero.begin();
while(postOrder != albero.end()){
cout << *postOrder << endl;
postOrder++;
}


Grazie per l'aiuto!

shodan
18-11-2010, 22:32
Questa funzione è sbagliata.


const_iterator end() const{
while(true){ // dovrebbe essere while (root != NULL)
root = root.right;
}
return const_iterator(root);
}

Loading