|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
[C] funzione ricorsiva che copia gli elementi di un albero binario in un vettore
Salve a tutti. Ho il seguente problema: devo copiare gli elementi di un albero binario di ricerca in un vettore ordinato in maniera crescente ricorsivamente.
Codice:
void copia(int vet[max],nod *rad, int i)
{
if (rad!=NULL)
{
copia(vet,rad->sinistro,i);
vet[i]=rad->info;
i=i+1;
copia(vet,rad->destro,i);
}
}
L OUTPUT mi copia solo i figli di destra. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
immagino che tu chiami con i = 0, no?
ora, quando arrivi la prima volta alla linea Codice:
copia(vet,rad->sinistro,i); visto che la chiamata non ritorna nulla, potresti ritornare il numero di elementi già inseriti nell'array, così da poter capire dove devi scrivere il prossimo numero |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
si lo chiamo con i=0.
Se ho ad esempio l albero semplice 4 2 6 cioe con 4 nodo radice , 2 figlio sinistro di 4 e 6 figlio destro di 4. nel vettore metterà solo 4 e 6. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
forse non hai notato, ma ti ho detto sia il perché sia una possibile soluzione :X
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Stai sovrascrivendo tutti i valori, se passi lo stesso puntatore "vet" alle due funzioni (prima sx e poi dx) seconda sovrascrivera` quello scritto dalla prima...
Ultima modifica di Ufo13 : 11-01-2011 alle 20:06. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
non so come altro fare. mi aiutate???
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Codice:
void copia(int vet[max],nod *rad, int i)
{
if (rad!=NULL)
{
copia(vet,rad->sinistro,i);
vet[i]=rad->info;
copia(vet,rad->destro,i+1);
}
}
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni Ultima modifica di qwerty86 : 13-01-2011 alle 21:38. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
e che cambia?
ps: ripeto, te l'ho detto come puoi fare
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
cambia che nella seconda chiamata incrementa i
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Ops...sono fuso! Hai ragione..si mi sa che la tua è una buona soluzione..
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
A me risulta sbagliato pure questo... I figli a sinistra sovrascrivono comunque la entry del padre no?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:38.




















