Salve a tutti!

Sto cercando di risolvere il seguente problema:

Scrivere una routine che, dato in imput un puntatore alla radice di un albero binario di caratteri, stampi tutti i cammini radice-foglia.

Io ho usato una struttura del genere:

codice:
struct nodo{ 
                               char inf;
                               struct nodo *sx;
                               struct nodo *dx; };
Ho provato a scrivere la seguente funzione:

codice:
struct nodo *stampaCammini(struct nodo *p){
    if(p!=NULL){
        printf("%c",p->inf);
        p->sx=stampaCammini(p->sx);
        p->dx=stampaCammini(p->dx);
        if(p->sx==NULL && p->dx==NULL)
             return(p)
    }
    else printf("\n");
    return(p);
}
però questa funzione mi stampa solo il primo cammino e poi i nodi rimanenti, senza quindi svolgere il compito di stampare tutti i cammini radice-foglia.

Non so come procedere.

Ringrazio in anticipo chiunque abbia la pazienza di aiutarmi!