View Single Post
Old 09-05-2011, 18:28   #10
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Cittā: Texas
Messaggi: 1722
Quote:
Originariamente inviato da clockover Guarda i messaggi
il fatto č proprio questo... che valori ritorneresti se si verifica il caso base?
se entri nella funzione
Codice:
int minimo(nodo *p){
    if(p == NULL)return cosa?
    ......resto.....
}
infatti nella mia versione dell'algoritmo ho eliminato il caso base proprio per questo motivo
Ho proposto di ritornare il massimo intero disponibile. La costante opportuna dovrebbe trovarsi in limit.h

Nel caso non ti piaccia come soluzione (si, lo so, non ti piace ) si puo' pensare come condizione iniziale che l'utente NON ti dia un albero vuoto (ci deve essere almeno un nodo) e questo deve essere testato prima di chiamare la funzione ricorsiva.

Dopo di che:
1 - caso base: il nodo e' una foglia (i.e. entrambi i sottoalberi sono NULL).
in tal caso, il minimo e' l'informazione contenuta nella radice.

2 - se il nodo sx non e' NULL,
2.1 - chiama ricorsivamente il minimo() e memorizza il risultato in left;
2.2 - calcola il minimo fra left ed la radice e memorizzalo in res_sx;
Se il nodo sx e' NULL allora res_sx = radice;

3 - se il nodo dx non e' NULL,
3.1 - chiama ricorsivamente minimo() e memorizza il risultato in right;
3.2 - calcola il minimo fra right e la radice e memorizzalo in res_dx;
Se il nodo dx e' NULL allora res_dx = radice;

4 - ritorna il minimo fra res_dx e res_sx;

Mi piace di piu' ritornare il massimo intero
__________________
In God we trust; all others bring data
sottovento č offline   Rispondi citando il messaggio o parte di esso