void percorreAD(Trie t, funcVisita *v) { char buf[TAM_MAX_CADEIA]; percorreAux((ImplTrie)t,v,buf,0); }
void percorreAD(Trie t, funcVisita *v) { /* Visita, em ordem alfabética, as cadeias contidas na AD 't' e aplica, a cada cadeia, a função 'v', sob a forma "v(s)", supondo que 's' é um apontador para a cadeia que deve terminar com o caractere nulo '\0'. */ char buf[TAM_MAX_CADEIA]; percorreAux((ImplTrie)t, v, buf, 0); } /* percorreAD */
void percorreAux(ImplTrie t, funcVisita *v, char *buf, int m) { /* Percorre a AD em ordem lexicográfica; constroi as cadeias em 'buf' e aplica a função 'v' quando termina uma cadeia, colocando no fim o caractere '\0'; 'm' é o índice do próximo caractere em 'buf'. */ int i; /* Sempre que forma uma cadeia, a visita */ if (t->fim) { buf[m] = '\0'; v(buf); } /* Verifica todas as subarvores dos nos para encontrar todas as cadeias */ for (i = 0; i < TAM_ALFABETO; i++) { if (t->subarv[i] != NULL) { buf[m] = i + 'a'; percorreAux(t->subarv[i], v, buf, m+1); } } }