Quote:
Originariamente inviato da clockover
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