Livros
#include
//estrutura da arvore de ordenaçao, sendo que no lado direito do nó é inserido valores menores que o nó, e o restante do lado esquerdo.... typedef struct Arvore arvore; struct Arvore{ int info; arvore *direito; arvore *esquerdo;
};
//imprimindo vetor void imprimir_vetor(int *vet, int tam){ int *aux, cont;
aux = vet; for(cont = 0; cont < tam; cont++){ printf("%d ", *aux); aux++; }
}
//imprimindo arvore...observe... esse imprimir é uma funcao recursiva... pois foi o modo mais facil que eu encontrei de imprimir... void imprimir_arvore(arvore *a){ arvore *aux; aux = a; if(aux->direito != NULL){ imprimir_arvore(aux->direito); }
printf("%d ", aux->info);
if(aux->esquerdo != NULL){ imprimir_arvore(aux->esquerdo); }
return;
}
//funcao para criar todos os nós que seram inseridos na arvore binaria arvore* criar_no(int info){ arvore *a; a = (arvore*) calloc (1, sizeof (arvore)); a->info = info; a->direito = NULL; a->esquerdo = NULL;
return a;
}
//abrindo arquivo que contem o tamanho e os valores de um vetor de inteiros void arquivo(int **vet, int *tam){
char *nome; nome = (char*) calloc (30, sizeof (char)); printf("\n\tArquivo: "); scanf(" %[^\n]", nome);
FILE *f; f = fopen(nome, "r"); free(nome);
int info, *aux, cont; printf("\n\tTamanho: "); scanf("%d", &(*tam));
*vet = (int*) calloc (*tam, sizeof(int));
cont = 0; aux = *vet;
//montando o vetor normalmente.... while(!feof(f) && (cont < *tam)){ fscanf(f, "%d", &info); if(!feof(f)){ *aux = info; aux++; cont++; } } *tam = cont;
}
//Ordenaçao usando arvore binaria... menos->inserido do lado direito... maior->inserido do lado esquerdo void ordenar(int **vet, arvore **a,