View Single Post
Old 28-12-2006, 22:21   #1
Mesh89
Member
 
Iscritto dal: Dec 2006
Messaggi: 198
Alberi, inserimento nodo iterativo

Salve a tutti
devo sviluppare una funzione iterativa che inserisca un nodo in un albero di ricerca. Nessun problema con la versione ricorsiva, ne con la versione iterativa della ricerca, ma questa proprio non mi esce. Ecco l'abbozzo di codice:

Codice:
void inserisci(nodo* root, int n)
{
    while (true)
    {
        if (root == NULL)
        {
            root = new nodo;
            root->info = n;
            root->sx = NULL;
            root->dx = NULL;
            return;
        }
        else
            if (root->info > n)  root = root->sx;
            else  root = root->dx;
    }
}

int main()
{
    nodo* root=NULL;
    int n;
    
    cin >> n;
    root = new nodo;
    root->info = n;
    root->sx = NULL;
    root->dx = NULL;
    for (int i=1; i<7; i++)
    {
        cin >> n;
        inserisci(root,n);    
    }
}
ed ecco la versione ricorsiva (corretta) della funzione:

Codice:
void inserisci(nodo* &root, int n)
{
    if (root == NULL)
    {
        root = new nodo;
        root->info = n;
        root->sx = NULL;
        root->dx = NULL;
    }
    else
        if (root->info > n)  inserisci(root->sx,n);
        else inserisci(root->dx,n);
}
grazie a tutti in anticipo
Mesh89 è offline   Rispondi citando il messaggio o parte di esso