PDA

View Full Version : [C++] Costruire un albero non binario.


PickeRoll
29-03-2011, 18:43
Ciao a tutti, avrei bisogno di un aiutino.

Devo creare un albero NON binario, usando il c++.
L'esercizio che avevo da fare precedentemente chiedeva di implementare invece un albero binario, e lì allora ho trovato molta documentazione sul web, mentre con questa opzione si trova veramente poco.

L'esercizio richiedere questo:


• Creazione di un albero vuoto.
• Controllo per stabilire se un albero `e vuoto.
• “Affiliazione”: inserimento di un nuovo nodo nell’albero, indicando, come parametri dell’operazione,
la stringa che identifica il padre e la stringa che rappresenta il nuovo figlio. Se il padre non appartiene all’albero, la funzione deve restituire false e il nuovo nodo non deve essere aggiunto
all’albero.
• Visita dell’albero, con una strategia di visita a scelta tra quelle conosciute implementata in
maniera iterativa e non ricorsiva. La visita deve avere l’obbiettivo di visualizzare l’intero
contenuto dell’albero.

http://img714.imageshack.us/img714/2073/albero.png

I punti 1,2,4 non mi sono problematici, mentre con il tre ho qualche problema.

Avete qualche consiglio da darmi ?

WarDuck
29-03-2011, 19:08
Credo tu possa risolvere mettendo in ogni nodo una lista di puntatori agli altri nodi.

tuccio`
29-03-2011, 19:30
il punto 3 è una visita in cui arrivato al nodo ricercato aggiungi il nodo e termini l'iterazione.. quindi è molto simile al punto 4, devi solo fermarti al nodo che cerchi, aggiungere il nuovo e ritornare true (ovviamente se la visita termina e hai visitato tutti i nodi senza aggiungere niente restituisci false)

PickeRoll
29-03-2011, 22:37
Credo tu possa risolvere mettendo in ogni nodo una lista di puntatori agli altri nodi.

Innazitutto grazie per la risposta.
Specifico subito che non sono un drago con la programmazione, ho iniziato da poco ed i miei prof universitari hanno deciso di buttarmi nel mare, senza darmi regole né niente, quindi sono autodidatta al 100%.

Con i puntatori non vado molto d'accordo.

L'esercizio precedente ho dichiarato una tab.h così

class Albero
{
struct Cell
{
string info;
Cell* padre;
Cell* sinistro;
Cell* destro;
};
Cell* radice;

public :

Albero();
~Albero();

void is_empty ();
bool insert ();
void print ();
};

Ogni volta che aggiungevo dei figli con il cin, aggiornavo la situazione con i puntatori, tenevo sempre un puntatore al primo elemento per stampare totalmente la lista... Quindi ad occhio terrei solo quest'ultimo, i puntatori destro,sinistro e padre li elimino totalmente.

Pensavo di creare un array (o una lista) come suggerito da te, di puntatori e pian piano prenderli da lì... Però mi sa che mi mancano proprio le basi per poter fare una cosa del genere, avete qualche link valido dove vi è scritto del codice commentato per fare ciò ?