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.