Allora Skynet..ho analizzato quel programma e più o meno il meccanismo mi è chiaro..però devo riuscire a capire una cosa sulle funzioni ricorsive, spero tu possa aiutarmi..
nodo *ins(nodo *root, nodo *nuovo){ //? come mai la funzione è stata dichiarata di tipo puntatore??
if (root==NULL)
return nuovo; // return nuovo vuol dire che ci restituisce il valore del nuovo nodo? ma perchè metterlo?
else{
if (nuovo->ch < root->ch)
root->sx=ins(root->sx,nuovo); //questa istruzione vuol dire che se il numero del nuovo nodo è minore di quella della root (che sarebbe quello radice), questo verrà puntato dal puntatore sx?
else
root->dx=ins(root->dx,nuovo);
return root; //perchè si mette return root??
}
}
void pre_ordine (nodo *a){ //perchè qua lui ha utilizzato il nodo a e non root??
if(a==NULL)
return;
cout<<a->ch;
if(a->sx!=NULL)
pre_ordine(a->sx); //questa istruzione, come anche 'pre_ordine(a->dx)', cosa fa sì, precisamente..?
if(a->dx!=NULL)
pre_ordine(a->dx);
return;
}
..queste ad esempio sono le due funzione relative all'inserimento e alla visita anticipata..i miei dubbi, come puoi vedere, li ho inseriti all'interno del programma come commento.. ..Ti ripeto, io so cosa sono le funzioni ricorsive ma non le utilizzo mai, proprio perchè non ne ho mai capito il funzionamento e l'utilità esatte, pur studiando dai libri o dai siti...