Estrutura de Dados - Operações em Árvore Binárias
#include
#include
#define LIMPAR_BUFF __fpurge(stdin) //Alterar esta linha conforme seu S.O.: Linux:
__fpurge(stdin), Windows: fflush(stdin) ou Outro. typedef struct Arvore{ int info; struct Arvore *esq; struct Arvore *dir;
} arvore; arvore *inserir(int v,arvore *e,arvore *d); void imprimir_entr(arvore *a); void imprimir_pre(arvore *a); void imprimir_pos(arvore *a); int altura_arv(arvore *a); int soma_arv(arvore *a); int soma_pares(arvore *a); int nivel(int v,arvore *a); int existe(int v,arvore *a); void imprimir_nivel(int v,arvore *a); int elemento_nivel(int v,arvore *a); int arvore_completa(arvore *a); int largurar_arvore(arvore *a); void imprimir_folhas(arvore *a); void imprimir_troncos(arvore *a); int ptc(int b,int e); int main(void)
{
arvore *a=NULL,*b=NULL,*c=NULL,*d=NULL; int opcao=0,resp=0; c=inserir(1,NULL,NULL); b=inserir(3,NULL,NULL); c=inserir(2,c,b); b=inserir(5,NULL,NULL); c=inserir(4,c,b); b=inserir(7,NULL,NULL); d=inserir(9,NULL,NULL); b=inserir(8,b,d); a=inserir(6,c,b); inicio: printf("1.Imprime a árvore.\n"
"2.Calcule altura da árvore.\n"
"3.Verificar se existe elemento na árvore.\n"
"4.Some os elementos da árvore.\n"
"5.Contar quantos elementos par(es) há.\n"
"6.Retorne o nível de um determinado nó.\n"
"7.Sair.\n"
"8.Imprimir um nivel da árvore.\n"
"9.Contar o número de elementos de um nível da arvore.\n"
"10.Verifique-se a árvore é completa.\n"
"11.Imprime a largura da árvore.\n"
"12.Imprimir as folhas da árvore.\n"
"13.Imprimir os troncos da árvore.\n"
"Digite sua opção:");
LIMPAR_BUFF;
scanf("%d",&opcao); switch(opcao) { case 1: printf("\nModo de imprimir a árvore:\n"
"1.Pre-ordem.\n"
"2.Entre-ordem.\n"
"3.Pos-ordem.\n"
"Digite sua opção:");
LIMPAR_BUFF;
scanf("%d",&opcao); switch(opcao) { case 1: imprimir_pre(a); break; case 2: imprimir_entr(a); break; case 3: imprimir_pos(a); break; }
break;