Salve a tutti.
Ho un albero formato da nodi ognuno dei quali ha un'informazione strutturata del tipo:
-matricola
-cognome
-nome
-produttivita.
L'albero risulta ordinato secondo la matricola.
La funzione ricorsiva che devo scrivere deve restituirmi il riferimento al nodo con produttività maggiore ( a parità di produttività restituisce quello con matricola minore).
Il codice che ho scritto è il seguente:
codice:
t_node* produttivita_maggiore(t_tree tree)
{
if(tree==NULL || (tree->right==NULL && tree->left==NULL))
return tree;
else
{
t_node* f_right=tree->right;
t_node* f_left=tree->left;
f_right=produttivita_maggiore(tree->right);
f_left=produttivita_maggiore(tree->left);
if(f_right==f_left)
{
if((strcmp((f_right->info).matricola,(f_left->info).matricola))<0)
return f_right;
else
return f_left;
}
else
{
if((f_right->info).produttivita > (f_left->info).produttivita)
return f_right;
else
return f_left;
}
}
}
...ma purtroppo mi esce il classico errore di windows (come lo stack overflow), quindi penso ci sia un'errore logico, che tuttavia non riesco a trovare. Qualcuno può aiutarmi?