DOMANDA [C++]Lista concatenata e ad albero

MPG

Utente Attivo
467
2
Ciao a tutti, vi chiedo se potete dare un aiuto per questo , non è per me direttamente.

E' un esercizio da fare di programmazione in queste linee di codice. La funzione BuildT che deve utilizzare obbligatoriamente i seguenti parametri nodoE* buildT(nodo* T, nodoE* C) e come struct si devono utilizzare i seguenti:



struct nodo { int info; nodo* left; nodo* right; nodo(int a = 0, nodo* b = 0, nodo* c = 0) { info = a; left = b; right = c; } };
struct nodoE { nodo* info; nodoE* next; nodoE(nodo* a = 0, nodoE* b = 0) { info = a; next = b; } };


La consegna è questa:
Dato un albero binario T con nodi del consueto tipo, struct nodo{int info; nodo*left,*right;}; si vuole
costruire una lista concatenata C di nodi nodoE come segue: struct nodoE{nodo*info; nodoE* next;};. La
lista C deve avere tanti nodi quanti sono i nodi di T e i nodi di C puntano a quelli di T in accordo con l’ordine
postfisso dei nodi di T, cioè prima il sottoalbero sinistro, poi quello destro e infine la radice

Risolto cosi e in teoria l'errore è che la prima invocazione non passa il nuovo C alla seconda.La funzione conc è stata fatta da chi l'ha scritta ed è completamente modificabile. Il codice che ha scritto è questo:


Codice:
nodoE* conc(nodo* T, nodoE* C) {
if (!C) return new nodoE(T, 0);
else
{
C->next = conc(T, C->next);
return C;
}
}
nodoE* buildT(nodo* T, nodoE* C) {
if (!T) return C;
else {
buildT(T->left, C);
buildT(T->right, C);
nodoE* x = conc(T, C);
return x;
}
}

Grazie a tutti.
 

bigendian

Utente Attivo
269
122
OS
Linux forever, freedom
Forse nessuno ha risposto perche non e' molto chiaro il problema.
Proiva a esporre meglio che puoi il problema, e se vuoi ripostare il codice con le giuste tabulazioni.
 

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 442 63.2%
  • XBOX Series X/S

    Voti: 257 36.8%

Discussioni Simili