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.
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
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.:
// 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); } }