Inizializzi il prodotto solo se a == NULL, altrimenti lo usi per andare a destra o a sinistra (Da non inizializzato) ha senso?
Non assegni mai il prodotto a nessun campo dell'albero, dove pensi di salvarlo?
Nel punto in ci chiami la funzione assegni il valore di ritorno?