PDA

Visualizza la versione completa : [C] Problema duplicazione albero


johnnny
04-04-2013, 14:47
Devo creare il duplicato di un albero già esistente, ma quando eseguo il codice e poi visualizzo il duplicato, mi stampa solo il sottoalbero destro della radice e non quello sinistro, come mai ?



nodo *duplica_albero(nodo *root, nodo *dup){
if(root!=NULL){
if(root->sx!=NULL)
duplica_albero(root->sx,dup);
nodo *new_nodo=(nodo *)malloc(sizeof(nodo));
dup=insert_abr(dup,root->stringa);
if(root->dx!=NULL)
duplica_albero(root->dx,dup);
}
return dup;
}

johnnny
04-04-2013, 18:46
Nessuno sa darmi una risposta ?

Scara95
04-04-2013, 19:01
Assegni tutto a dup...
la logica dovrebbe essere:

Duplico root in dup
duplico il ramo sinistro root->l in dup->l
duplico il ramo destro root->r in dup->r


actually gli ultimi due possono essere eseguiti in contemporanea...

johnnny
04-04-2013, 20:59
Ma non bisogna passare il ramo sinistro e destro quando richiamo duplica, altrimenti non funziona in questo modo. Come posso risolvere ?

johnnny
05-04-2013, 01:47
C'è qualcuno che sa dirmi come modificare quel pezzo di codice ?

Scara95
05-04-2013, 17:57
nodo *duplica_albero(nodo *root){
nodo *dup = NULL;
if(root!=NULL){
dup = (nodo *)malloc(sizeof(nodo));
//copia dei dati che non so quali siano perché non mostri la struttura
dup->sx = duplica_albero(root->sx);
dup->dx = duplica_albero(root->dx);
}
return dup;
}

Loading