io lo farei così
la funzione va chiamata con il terzo argomento come puntatore di un intero inizializzato a 0
è la prima volta che aiuto qualcuno in questo forum, anche se sono abbastanza sicuro possa andare benecodice:void copia(int array[],nod *rad,int *i) { if (rad==NULL) return; copia(array,rad->sinistro,i); array[(*i)]=rad->info; (*i)=(*i)+1; copia(array,rad->destro,i); }
nel codice che avevi postato tu, la i veniva incrementata solo prima di una chiamata al figlio destro... quindi tutti i figli sinistri venivano sovrascritti nella posizione 0
cmq lolide, secondo me il codice che hai scritto è sbagliato per gli stessi motivi
puoi ottimizzarla eliminando una riga, così:
codice:void copia(int array[],nod *rad,int *i) { if (rad==NULL) return; copia(array,rad->sinistro,i); array[(*i)++]=rad->info; copia(array,rad->destro,i); }

Rispondi quotando