Os testes para as listas de exercicios se dara via arquivos. Seguem abaixo as especificacoes deles. ------------- - Questao 1 - ------------- Arquivo fonte: quest1.c Arquivo de entrada: quest1.in O arquivo de entrada consiste de varios conjuntos de dados. Cada conjunto comeca com uma linha contendo o numero "x" de elementos da arvore. A proxima linha contem "x" numeros, que devem ser inseridos na ordem em que aparecem em uma arvore de busca binaria. O arquivo de entrada e' terminado por um conjunto de dados comecando com "x = 0". Esse conjunto nao deve ser processado. Entrada exemplo: 4 -10 125 0 130 1 10000 0 A arvore do primeiro conjunto corresponde a: -10 \ 125 / \ 0 130 A arvore do segundo conjunto corresponde a: 10000 Arquivo de Saida: quest1.out Para cada conjunto, primeiro imprima o numero do conjunto, como mostrado na saida exemplo. Entao, imprima para cada no' da arvore o seu fator de equilibrio. Uma linha em branco separa cada conjunto. Saida exemplo correspondente `a entrada acima: Conjunto #1 0 0 130 0 125 0 -10 -2 Conjunto #2 10000 0 Observacoes: - Nao serao inseridos dois elementos iguais; - A ordem de impressao dos nos deve ser pos-ordem (primeiro sub-arvore esquerda, depois a sub-arvore direita e depois o no'). ------------- - Questao 2 - ------------- Arquivo fonte: quest2.c Arquivo de entrada: quest2.in O arquivo de entrada consiste de varios conjuntos de dados. Cada conjunto comeca com uma linha contendo o numero "x" de elementos da arvore. A proxima linha contem "x" numeros, que devem ser inseridos na ordem em que aparecem em uma arvore AVL. O arquivo de entrada e' terminado por um conjunto de dados comecando com "x = 0". Esse conjunto nao deve ser processado. Entrada exemplo: 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 10000 0 Arquivo de Saida: quest2.out Saida exemplo correspondente `a entrada acima: Conjunto #1 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Conjunto #2 10000 Observacoes: - Nao serao inseridos dois elementos iguais; - Tentem seguir as mensagens tal qual como especificadas nos exemplos acima. - Verifique abaixo o esboco de como implementar essa questao e gerar o arquivo de saida struct arvore{ registro reg; struct arvore * esq, *dir; }*arvore; void imprime(struct arvore *r,int l) { int i; if(r==NULL) return; imprime(r->dir,l+1); for(i=0;ireg.chave); imprime(r->esq,l+1); } int readdata() { fscanf(fpin,"%d",&n); return n; } void process(){ int i; registro x; inicia(&arvore); //faz a arvore apontar para NULL fprintf(fpout,"Conjunto #%d\n",instancia); for(i=0;i