a occhio sembra che nel passaggio
codice:
  predec->dato=A[i]; 
  predec->sx=NULL;
  predec->dx=NULL;
il puntatore predec punti a NULL, pertanto c'e' l'errore.
Comunue usa nomi "sensati" per le variabili :'( please, ogni volta che si legono questi codici ci si perde sempre tempo a capire cos'e' P o A o Z o V, un bel nome tipo Puntatore_Testa oppure Root_Pointer o Root_P, cosa simile, pleeeeeeeease :'(