Si certo...l'albero è ordinato rispetto alla chiave che è: codice
Certo che ho provato a fare la funzione e alla fine l'ho fatta in questo modo...
void trovaArticoloPiuVenduto(struct prodotto *radice){
if(radice != NULL){
trovaArticoloPiuVenduto(radice->left);
if(radice->venduti > maxVenduti){
maxVenduti = radice->venduti;
prodottoPiuVenduto = radice;
}
trovaArticoloPiuVenduto(radice->right);
}
}
ho fatto una visita dell'albero e se il nodo visitato ha campo venduti > di maxVenduti salvo il nodo nella variabile globale prodottoPiuVenduto di tipo struct prodotto *.
In questo modo però sia la variabile maxVenduti sia la variabile prodottoPiuVenduto sono globali. Mi chiedevo se c'era un modo per effettuare il confronto..e solo al termine della visita di tutto l'albero restituire il nodo con campo venduti più grande.
Cerco di spiegarmi meglio: poniamo che 3 nodi vengano visitati, nel primo il campo venduti sia = a 1, nel secondo 2 e nel terzo 3. In tutti e tre i casi, il confronto avrà esito positivo e la variabile prodottoPiuVenduto punterà prima al nodo1, poi al nodo2 e infine al nodo3. Alla fine la variabile prodottoPiuVenduto punterà giustamente al nodo3, ma mi sembrano un po' inutili i due assegnamenti precedenti.
Non so se sono stato molto chiaro..ma spero mi abbiate capito.
Draganbao

Rispondi quotando