Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Alberi binari

  1. #1

    [C] Alberi binari

    Ciao a tutti,
    è un giorno che mi sto sbattendo ma nn riesco a trovare la soluzione.
    Devo risolvere ricorsivamente questo esercizio:

    Sia A un albero, rappresentato mediante i puntatori figlio-/fratello-destro, nel quale ad ogni nodo è associata una chiave numerica. Si scriva una procedura in C che restituisca il numero di nodi interni dell’albero i cui figli contengono solamente chiavi negative (nota: i nodi interni di un albero sono quelli che hanno almeno un figlio), La procedura deve segnalare errore se l’albero èvuoto.

    Suggerimento: Come primo passo si scriva una procedura int figli neg ric(nodo *n) che resituisca il numero di nodi interni con figli contenenti solo chiavi negative contenuti nel sottoalbero di radice *n.

    La struttura è fatta in questo modo

    codice:
    typedef struct mionodo {
      struct mionodo *p;    // genitore
      struct mionodo *fs;   // figlio sinistro
      struct mionodo *fd;   // fratello destro
      int key;              // chiave
    } nodo;

    Avete qualche idea... ???

  2. #2
    Nessuno ha qualche idea?
    Come si fanno a contare i nodi interni???

  3. #3
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    fai una visita ricorsiva dell'albero...
    ricorsiva ti dice niente...
    tipo:
    -controlli se la radice non è NULL, altrimenti ritorni 0;
    -if(valore nodo è positivo) richiami funzione(sottoalbero sx) + richiami funzione(sottoalbero dx) + 0;
    else richiami funzione(sottoalbero sx) + richiami funzione(sottoalvero dx) + 1;

    naturalmente questa funzione conta anche i nodi negativi che stanno nelle foglie... semmai ti fai un controllo ulteriore se il nodo che stai valutando è una foglia...non è difficile...

    ...
    capì?????

    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

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.