Os testes para as listas de exercícios serão feitos via arquivos.
Seguem abaixo as especificações deles.


==========
Questão 1
==========
Arquivo fonte: L2Q1.{c | cpp | java}
Arquivo de entrada: L2Q1.in
Arquivo de saída: L2Q1.out
ENTRADA

O arquivo de entrada consiste de vários conjuntos de dados. Cada conjunto de dados contém duas linhas: a primeira linha contém o número de elementos a serem inseridos e a segunda linha contém os elementos que serão inseridos, na ordem em que aparecem, na árvore AVL. O conjunto de dados que iniciar com 0 (zero) como número de elementos indica fim de execução e esse conjunto não deve ser processado.



Entrada exemplo:
3
2 3 1
5
1 2 3 4 5
10
2 1001 5 13 14 15 9 10 102 103
20
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1
10000
0 

SAÍDA

O arquivo de saída contém árvore AVL.

Saída da entrada acima:
Conjunto #1 
      3 
2 
      1 

Conjunto #2 
            5 
      4 
            3 
2 
      1 

Conjunto #3 
            1001 
                  103 
      102 
            15 
14 
                  13 
            10 
                  9 
      5 
            2 

Conjunto #4 
                  20 
            19 
                  18 
      17 
                  16 
            15 
                  14 
13 
                        12 
                  11 
                        10 
            9 
                        8 
                  7 
                        6 
      5 
                  4 
            3 
                  2 
                        1 

Conjunto #5 
10000 

Obs.:


Exemplo (referência) de código fonte para impressão:
Em C:
// Um exemplo simples de uma árvore binária
struct arvore {
	int valor;
	struct arvore * dir;
	struct arvore * esq;
} 

// Para imprimir a arvore a partir da raiz use: imprimir(raiz, 0);
void imprimir(struct arvore * no, int l) {
	int i; 
	if (no == NULL) return; // Caso base

	// Imprime a sub-árvore a direita
	imprimir(no->dir, l+1); 

	// Imprime o espacamento do elemento - reparem que são 6 (seis) espaços
	for(i = 0; i < l; i++) {
		fprintf(fpout,"      ");
	}

	fprintf(fpout, "%d\n", no->valor); 

	// Imprime a sub-árvore a esquerda
	imprimir(no->esq, l+1);
} 
Em JAVA:
// Um exemplo simples de uma arvore binaria
class Arvore { 

	// atributos da classe
	public int valor;
	public Arvore dir;
	public Arvore esq;

	// Declaracao dos outros métodos ...

	// Para imprimir a arvore a partir da raiz use: raiz.imprimir(0);
	public void imprimir(int l) {
		int i;

		// Imprime a sub-arvore a direita
		if (this.dir != null) this.dir.imprimir(l+1); 

		// Imprime o espacamento do elemento - reparem que sao 6
		// (seis) espacos
		for(i = 0; i < l; i++) {
			arquivo.print("      "); 
		}
	
		arquivo.println(this.valor); 

		// Imprime a sub-arvore a esquerda
		if (this.esq != null) this.esq.imprimir(l+1);
	} 
}





[Última alteração em 04/02/2002]