TArvore * CriaArvore(char * S1, char * S2){ int Cont, Hue; TArvore * Axu = NULL; char Ar1[MAX_TAM], Ar2[MAX_TAM]; if( S2[0] != '\0'){ Axu = (TArvore *) malloc( sizeof(TArvore) ); Axu->Letra = S1[0]; Axu->esq = NULL; Axu->dir = NULL; Cont = 0; while( S2[Cont] != '\0' && S2[Cont] != S1[0]){ Ar1[Cont] = S2[Cont]; Cont++; } Ar1[Cont] = '\0'; Hue = 0; if( S2[Cont++] != '\0' ) while( S2[Cont] != '\0' ){ Ar2[Hue++] = S2[Cont]; Cont++; } Ar2[Hue] = '\0'; if( *S1 != '\0') Axu->esq = CriaArvore( &S1[1], Ar1); if( *S1 != '\0') Axu->dir = CriaArvore( &S1[ Cont - Hue], Ar2); } return Axu; }
void InsereNaArvoreRN(ArvoreRN* arvore, char* string){ FILE* arquivo; arquivo = fopen(string,"r"); if(!arquivo){ printf("Erro ao abrir o arquivo %s! Encerrando Programa...\n", string); exit(1); } CriaArvore(arvore); InsereArquivoArvore(arvore,arquivo); fclose(arquivo); }
int main(){ int ContVez, Vez, Nos, ContNos, Cont1; char S2[MAX_TAM], S1[MAX_TAM]; TArvore * Raiz = NULL; scanf("%d", &Vez); for(ContVez=0; ContVez < Vez; ContVez++){ scanf("%d %s %s", &Nos, S1, S2); Raiz = CriaArvore( S1, S2); ImprimePre( Raiz ); printf("\n"); } return 0; }