exercicio de ordenação e arvores binarias
#include
#include
struct arvore
{
int a,m; struct arvore *n,*e,*d;
};
typedef struct arvore no;
no *raiz, *b, *p, *atual, *busca; int cont=0;
void inserir(int num); void pCentral(no *pr); void pPos(no *pr); void pPre(no *pr); void pesquisar(int num);
void inserir(int num) { b=(no*)malloc(sizeof(no)); b->d=NULL; b->e=NULL; b->n=NULL; cont++; b->a=num; if(raiz==NULL) { raiz=b; } else { atual=raiz; while(true) {//inicio da estrutura de repetição if(b->a >= atual->a) { if(atual->d == NULL) { atual->d=b; b->n=atual; break; } else atual=atual->d; } if(b->a < atual->a) { if(atual->e==NULL) { b->n=atual; atual->e=b; break; } else atual=atual->e; } }//fim da estrutura de repetição } } //Pesquisa valores na árvore binária void pesquisar(int num) { if(raiz==NULL) system("pause"); int Vbusca=num; busca=raiz; printf("Percurso da busca: "); while(true) { if(busca==NULL) { printf("Valor nao encontrado!\n"); system("pause"); break; } if(busca->a==Vbusca) { printf("%d\n",busca->a); system("pause"); break; } else { printf("%d ",busca->a); if(Vbusca>busca->a) { busca=busca->d; } else { busca=busca->e; } } } } //Métodos de percurso na árvore binária void pCentral(no *pr) { if(pr!=NULL) { pCentral(pr->e); printf("%d ",pr->a); pCentral(pr->d); } } void pPre(no *pr) { if(pr!=NULL) { printf("%d ",pr->a); pPre(pr->e); pPre(pr->d); } }
//Pós-fixado aqui