Visualizzazione dei risultati da 1 a 3 su 3

Discussione: C - Visita albero

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760

    C - Visita albero

    codice:
    
    Albero Albero_Vuoto(void)
    {
     
      return(NULL);
    }
    
    
    
    
    Albero Crea(int val,Albero sin,Albero des)
    {
      Albero RADICE;
     
      RADICE =  malloc(sizeof(Nodo));
      RADICE->inf = val;
      RADICE->sinistro = sin;
      RADICE->destro = des;
      return (RADICE);
    }
    
    
    
    
    int sommaRic(Albero a) {
        int s=0;
      if(emptyL(a)) return(0);
    
      else return( a->inf+sommaRic(a->sinistro) + sommaRic(a->destro));
    }
    
    
    void stampaAlbero(Albero a) {
    if (!(emptyL(a))) {
        stampaAlbero(a->sinistro);
        stampaAlbero(a->destro);
        // Sostituire cout con altre operazioni per altri scopi di visita
        printf("\n%d",a->inf);
      }
    
    }
    
    
    int altezza(Albero a) {
        int as=0;int ad=0;
      if(emptyL(a)) return(0);
      else{
          as=altezza(a->sinistro),ad=altezza(a->destro);
          if(as==ad) return as+1; /* se sono profondi uguali è indifferente*/
          if(as>ad) return as+1;
          else return ad+1;
    }}
    
    
    Lista cammino(Albero a, Tipo_el e) {
      int c=0;
      c=cerca(a,e);
      if(c!=1) {printf("\nL'elemento non e' presente");
      return NULL;}
      else {printf("\nL'elemento e' presente");
      }
    }
    
    
    int cerca(Albero a, int x)
    {
      if (a == NULL) return 0;
      else if (a->inf == x) return 1;
        else return cerca(a->sinistro,x) || cerca(a->destro,x);
    }
    
    
    int camminoMax(Albero a, Lista* c) {
     return 0;
    }
    Dovrei creare un a funzione CamminoMax per arrivare ad una foglia dell' albero e ritornare anche la profondità,come posso fare?

  2. #2
    Utente di HTML.it L'avatar di br0tz
    Registrato dal
    Jun 2003
    Messaggi
    27
    La funzione che devi scrivere è molto simile alla funzione cerca...

    devi solo ritornare la profondità quando a==null e fare un confronto per vedere se è la profondità maggiore..

    non penso tu debba modificare piu' di 2 o 3 righe di codice..

    manda la tua idea!
    -------------
    Slackware 9.1

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    grazie,direi di misurare la profondità di tutte le foglie e di ritornare la maggiore

    Se invece dovessi cercare un elemento,se c' è,stampare il percorso dalla radice all' elemento,come faccio?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.