Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di felpone
    Registrato dal
    Jun 2010
    Messaggi
    182

    [c]funzione ricorsiva per scorrere alber obinario

    Questa è una funzione che "dovrebbe"sommare solo gli elementi dell'albero che sono a livello dispari.

    Secondo me questa funzione non arriva a tutti i nodi dell'albero fino in profondità,voi che ne pensate?Perchè appena c'è una return t->item non procede più per quel sottoalbero.


    codice:
    typedef struct nodo *ptree;
    typedef struct nodo {
            int item;
            ptree left, right;
    } nodeDescriptor;
    
    
    
    // la funzione e' chiamata con liv=0;
    int somma_livelli_dispari(ptree t, int liv){
            if (t==NULL) return 0;
            if (liv%2) return t->item;
            else return somma_livelli_dispari(t->left, liv+1) + somma_livelli_dispari(t->right, liv+1);
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Infatti è sbagliata, con quella funzione sommi al più i nodi del livello 1.
    Io la riscriverei semplicemente così:

    codice:
    int somma_livelli_dispari(ptree t, int liv)
    {
        if (!t) return 0;
        return somma_livelli_dispari(t->left, liv+1)  +
               somma_livelli_dispari(t->right, liv+1) +
               (liv%2 ? t->item : 0);
    }
    every day above ground is a good one

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.