Funcoes em Arvores Binarias - ED
#include "tad.h" int main(){
ARVORE *arv, *arv2; int num, op, aux=0; cria_arvore(&arv); cria_arvore(&arv2); do{ op = Menu(); system("cls"); switch(op){ case 1://inserir no scanf("%d", &num); insere_arvore_binaria(&arv->raiz, num); break; case 2: //conta folhas aux = conta_folhas_recursivo(arv->raiz); printf("A arvore contem [%d] folhas \n", aux); system("pause"); break; case 3: //remove no printf("Forceca um valor:"); scanf("%d", &num); remover(&arv->raiz, num); break; case 4: //busca binaria recursiva printf("Forceca um valor:"); scanf("%d", &num); if( busca_binaria_recursiva(arv->raiz, num) == 1)
printf("O numero [%d] esta contido na arvore!\n", num); else printf("O numero [%d] NAO esta contido na arvore!\n", num); system("pause"); break;
case 6: //altura aux = altura(arv->raiz); printf("[%d] e a altura da arvore\n", aux); system("pause"); break; case 5: exit(0); case 7: //impressao pre, in, pos ordem e desenha arvore pre_ordem(arv->raiz); printf("\n"); in_ordem(arv->raiz); printf("\n"); pos_ordem(arv->raiz); printf("\n"); desenha_arvore(arv->raiz, 0); printf("\n"); system("pause"); break; case 8: //espelho espelho(arv->raiz, &arv2->raiz); desenha_arvore(arv->raiz,0); printf("\nOriginal Acima / Copia Abaixo\n "); desenha_arvore(arv2->raiz,0); system("pause"); break; }
}while(op != 0);
printf("\n\n\n"); system("pause"); return(0);
}//main
/* copiar e salvar em um projeto como tad.h */
#include
#include
typedef struct no{ //criando a estrutura de cada no int info; struct no *dir, *esq;
}NO;
typedef struct arvore{ //criando a estrutura de uma arvore de nos struct no *raiz;
}ARVORE;
void cria_arvore(ARVORE **arv); void insere_arvore_binaria(NO **no, int valor); void pre_ordem(NO *no); void in_ordem(NO *no); void pos_ordem(NO *no); int Menu (void); bool busca_binaria_recursiva(NO *no, int valor); short int