invece c'è un errore grosso quanto una casa.

struttura->campo

Si usa quando la struttura è passata come puntatore... in quel caso è passata tree T non tree *T
Per cui devi usare struttura.campo

void stampaIN(tree T){
{
if(!T) return;

stampaIN(T.left);
printf("%d ", T.elemento);
stampaIN(T.right);
}

Se non va bene così hai sbagliato qualcosa nel resto del codice