Ho risolto in questa maniera (qualora qualcuno fosse interessato alla soluzione):
codice:
int crea_elenco_razze(TTree tree,char elenco [][MAX])
{
if(tree==NULL)
return 0;
else
{
if(tree->right==NULL && tree->left==NULL)
{
int c=aggiungi(tree->info.satellite.razza,elenco,0);
return c;
}
else
{
if(tree->right!=NULL && tree->left==NULL)
{
int c=crea_elenco_razze(tree->right,elenco);
int m= aggiungi(tree->info.satellite.razza,elenco,c);
return m;
}
else
{
if(tree->right==NULL && tree->left!=NULL)
{
int c=crea_elenco_razze(tree->left,elenco);
int m= aggiungi(tree->info.satellite.razza,elenco,c);
return m;
}
else
{
int r=crea_elenco_razze(tree->right,elenco);
int l=crea_elenco_razze(tree->left,elenco);
int m=aggiungi(tree->info.satellite.razza,elenco,r+l);
return m;
}
}
}
}
}
...sbagliavo nell'analizzare i vari casi.