Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C] Problema duplicazione albero

    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 ?

    codice:
    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;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    Nessuno sa darmi una risposta ?

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    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...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    Ma non bisogna passare il ramo sinistro e destro quando richiamo duplica, altrimenti non funziona in questo modo. Come posso risolvere ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    C'è qualcuno che sa dirmi come modificare quel pezzo di codice ?

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    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;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.