Salve a tutti. Ho un albero binario la cui chiavi è l'anno in cui si è svolto un determinato campionato di Moto GP. Devo scrivere una funzione ricorsiva che cerchi quale pilota ha vinto più edizioni.
Il mio dubbio è che non so come cercare la stringa "pilota", dato che non è una chiave. Gli alberi a quanto ho capito sono strutturati in modo tale che a sinistra va l'elemento minore, e a destra l'elemento maggiore (in questo caso gli anni delle edizioni). Come posso sapere se devo cercare a destra o a sinistra?
Io ho provato a scriverla così, ma naturalmente funziona solo la prima parte:
codice:
TNode* campionati_pilota(TTree tree, char pilota[]){
if(tree==NULL || strcmp(tree->info.satellite.pilota, pilota)==0){
return tree;
}else{
campionati_pilota(tree->right, pilota);
campionati_pilota(tree->left, pilota);
}
}
Se inserisco il primo pilota che ho inserito, la funziona mi restituisce il numero di edizione vinte del pilota, quindi la prima parte della funzione va bene. Se inserisco già il secondo pilota inserito da tastiera, mi dice "Pilota non trovato". Non so come determinare se il pilota va cercato a destra o a sinistra.
Ho immaginato che la funziona vada scritta così:
codice:
if(...){
campionati_pilota(tree->right, pilota);
}else
campionati_pilota(tree->left, pilota);
Ma non so cosa dovrei mettere nell'if, forse una strcmp?