Guarda ho provato a farlo in uno stato di morte apparente, fai un po' due prove anche se comunque dovrebbe andare (INT_MAX è una costante definita in limits.h; la funzione min serve a trovare il minimo tra tre numeri, volendo si può riscrivere con una semplice sequenza di if-then-else, e può essere anche una macro).
dove la struttura del nodo si può dedurre facilmente:codice:int min(int a, int b, int c) { return a < b ? (a < c ? a : c) : (b < c ? b : c); } int tree_min(node *root) { /* empty node */ if (root == NULL) { return INT_MAX; } /* leaf node */ if (root->sx == NULL && root->dx == NULL) { return root->info; } return min(tree_min(root->sx), tree_min(root->dx), root->info); }
Alla fine poteva andare bene anche come l'hai fatta tu, solo che avresti dovuto innanzitutto restituire qualcosa anche nel "caso base", cioè quando la radice è NULL (altrimenti la funzione restituisce valori "casuali" essendo comunque di tipo int) e poi il confronto finale andrebbe fatto appunto a tre (comprendendo conf), non solo tra min1 e min2.codice:typedef struct node { int info; struct node *sx; struct node *dx; } node;

Rispondi quotando