Ciao, direi che hai almeno un paio di problemi:

1) in main(): l'istruzione Stringa nome_ric = malloc(sizeof(Stringa)); alloca sempre 4 bytes, che è la dimensione di un qualsiasi puntatore (compreso quello a stringa), quindi se riesci a scrivere fino a 20 caratteri è grasso che cola, visto che lo stack è già bello incasinato a partire quinto
In pratica con la malloc() devi allocare tanto spazio per quanto è richiesto dalla dimensione massima che hai stabilito per la tua stringa.

2) in bit_new(): con l'istruzione new -> nome = nome_ric; l'unica cosa che ottieni è una copia del puntatore, non della tua stringa. A causa di questo, il puntatore new->nome viene sempre inizializzato con l'indirizzo di memoria che contiene il termine che ho appena digitato, per cui l'algoritmo di ricerca dirà sempre "Già inserito" (di fatto confronterà sempre una stringa con sé stessa, fatta eccezione per il primo passaggio in cui l'albero e vuoto e non viene eseguito alcun controllo!). Per risolvere, l'istruzione deve diventare: new -> nome = malloc(MAX_STRING_SIZE); per allocare lo spazio necessario seguita da strcpy() (o strncpy()) per copiare la stringa dal buffer di input allo spazio riservato nell'albero.

Stefano.