codice:
void copia(int vet[max],nod *rad, int i)
{
  if (rad!=NULL) 
    {
     copia(vet,rad->sinistro,i);
     vet[i]=rad->info;   
     i=i+1;
     copia(vet,rad->destro,i);
    } 
}
Con questo codice ti scorri tutti i rami di sinistra e non li salvi poi salvi quelli di destra e poi non fai nessun controllo se il vettore sia pieno.
Prova con questo

codice:
void copia(int vet[max],nod *rad, int i)
{
  if ((rad!=NULL) || (i < max))
    {
     vet[i]=rad->info;
     copia(vet,rad->sinistro,i++);
     vet[i]=rad->info;
     copia(vet,rad->destro,i++);
    } 
}