Scusate se mi intrometto...volevo sapere che tipo di albero è. Mi spiego, mi sembra
di ricordare dai miei lontani anni in Università che un albero viene implicitamente ordinato,
in quanto la posizione dove aggiungere il nuovo nodo la trovo con un confronto tra il
valore da inserire e il valore del nodo corrente: se è minore lo aggiungo a sx altrimenti a
dx.
Se è così allora il valore minimo non dovrebbe essere semplicemente il valore del child
più a sinistra dell'albero?
Non si potrebbe cioè usare il codice:
codice:
int minimo(Tree *T) {
if( !T )
return MAX_INT;
if( T->leftchild )
return minimo(T->leftchild);
else
return T->info;
}
Magari si potrebbe anche evitare la ricorsione con:
codice:
int minimo_nr(Tree *T) {
if( !T )
return MAX_INT;
while( T->leftchild )
T = T->leftchild;
return T->info;
}
Ho ovviamente supposto un albero definito così:
codice:
struct Tree
{
int info;
Tree *leftchild;
Tree *rightchild;
};
Se così non fosse allora non ho capito nulla (e quindi i miei ricordi si sono sbiaditi col tempo) e quindi fate finta che non abbia scritto niente.