Domanda Esercizio lista concatenata e albero

NicoMaggi

Utente Iron
9 Gennaio 2021
1
1
0
7
Avrei questo 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 devo utilizzare i seguenti:

Codice:
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

Io ho risolto cosi e in teoria l'errore è che la prima invocazione non passa il nuovo C alla seconda.La funzione conc è stata fatta da me ed è completamente modificabile. Il codice che ho 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 in anticipo per l'aiuto