ciao
caro
giocare
mondo
Allora vediamo l'inserimento passo per passo, il tuo algoritmo fa questo:
inserisco ciao nella radice // Questo lo diamo per scontato
strcmp(ciao, caro) è < 0 quindi va a sx inserisce caro
strcmp(ciao,giocare) è >0 quindi va a dx inserisce giocare
strcmp(ciao,mondo) è >0 quindi va a dx
poi scende e confronta
strcmp(giocare,mondo) è >0 quindi va a dx inserisce mondo
L'quivoco nasce dal fatto che comunque tu fai il confronto sempre con la radice,
strcmp(elem, t->str);