Mesh89
28-12-2006, 21:21
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:
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:
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
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:
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:
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