Puoi costruirti una lista linkata sullo stack, da seguire ogni volta che devi stampare tutto un percorso:
codice:
struct nodo
{
    struct nodo * sx;
    struct nodo * dx;
    char inf;
};

struct nodoList
{
    struct nodo * payload;
    struct nodoList * next;
};

void stampaCammini(struct nodo * p)
{
    struct nodoList root;
    root.next=NULL;
    root.payload=p;
    stampaCamminiHelper(&root, &root);
}

void stampaCamminiHelper(struct nodoList *prev, struct nodoList * root)
{
    struct nodoList node;
    node.next=NULL;
    prev->next=&node;
    if(prev->payload)
    {
        node.payload=prev->payload->sx;
        stampaCamminiHelper(&node, root);
        node.payload=prev->payload->dx;
        stampaCamminiHelper(&node, root);
        if(!prev->payload->sx && !prev->payload->dx)
        {
            struct nodoList *n=root;
            while(n!=NULL)
            {
                putchar(n->payload->inf);
                n=n->next;
            }
            putchar('\n');
        }
    }
}