Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246

    [c++] AlberoBinario : inserimento di un elemento

    bool AlberoBinario :: Inserisci(const int t) {
    Record* punt = new Record;
    punt->i=t; // costruisco il nuovo elemento (sarà una foglia)..
    punt->dest=0;
    punt->sin=0;

    punt=radice; // il confronto parte dalla radice
    _Inserisci(punt->i, punt); // poi vedo dove deve essere inserito..
    return(punt);
    }

    void AlberoBinario :: _Inserisci(const int t, Record*& p ) {
    if( t > p->i ) {
    if(p->dest==0) // se a destra non c'è niente..
    p->dest = p; // collego il nuovo elemento all'albero..
    else {
    p=p->dest;
    _Inserisci(t, p); // sul nodo ripeto le stesse operazioni precedenti
    }
    }

    if( t < p->i ) {
    if( p->sin==0 ) // se a sinistra non c'è niente
    p->sin = p; // collego il nuovo elemento all'albero..
    else {
    p=p->sin;
    _Inserisci(t,p); // sul nodo ripeto le stesse operazioni precedenti
    }
    }
    }
    Tra i membri privati della classe albero ho un puntatore ad un tipo che ho chiamato Record (impropriamente, visto che forse era + sensato chiamarlo nodo), cioè alla radice dell'albero.

    Ho implementato in queso modo la procedura di inserimento di un elemento "in ordine", ma non sono sicuro che vada bene..
    Potete dargli una occhiatina??

    Grazie!!
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  2. #2
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    struct Record {
    int i;
    Record* dest;
    Record* sin;
    };

    class AlberoBinario {
    private:
    Record* radice;
    void _Inserisci(const int t, Record*& p);
    void _Elimina(Record* p);
    void _StampainPostordine( Record* p) const;
    void _StampainOrdine(Record* p) const;
    public:
    AlberoBinario(int t);
    ~AlberoBinario();
    bool Inserisci(const int t);
    void Svuota();
    void PreOrdine() const;
    void InOrdine() const;
    void PostOrdine() const;
    };
    Nel caso potesse essere utile ecco l'interfaccia della classe...

    Grazie ancora!!
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  3. #3
    codice:
    void CTree::InternalAdd(int n, PCTreeNode& ARoot)
    {
         if (ARoot == NULL)
         {
             ARoot = new CTreeNode;
             ARoot->n = n;
             ARoot->left = NULL;
             ARoot->right = NULL;
         }
         else
         if (n <= ARoot->n) InternalAdd(n, ARoot->left);
         else
         if (n > ARoot->n) InternalAdd(n, ARoot->right);
    }
    
    void CTree::Add(int n)
    {
         InternalAdd(n, FRoot);
    }
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  4. #4
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    Ti ringrazio, Luc@as!!
    Ma conosco già la soluzione e mi scuso se prima non l'ho detto..
    il problema è che non riesco a capire perchè quello che ho scritto prima non va: a me sembrava così logico!!!
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.