Ademas:
Si tienes un puntero a una estructura
estructura * p;
hacer
p->campo_de_la_estructura
es solo valido si p
no es NULL.
Tu codigo dice justo lo contrario
Código C++:
Ver originalif(auxiliar==NULL) {
auxiliar->dato=nuevo_valor;
auxiliar->sig=raiz;
}