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'); } } }

Rispondi quotando