Arvore binaria
#include
typedef struct arvore{ int valor; struct arvore* esq; struct arvore* dir;
}arvore;
arvore* insere(arvore *a, int x); arvore* remove_no(arvore *a, int x); arvore* balancear(arvore *a); int altura (arvore *a); void destroi(arvore *a); int busca(arvore *a, int x); void imp_pos(arvore *a); void imp_pre(arvore *a); void imp_em(arvore *a); void imp_larg(arvore *a);
int maior(arvore *a){ int m,md; if(a==NULL){ return -1; }else{ m = a->valor; md=maior(a->dir); if(m>md){ return m; }else return md; }
} int conta(arvore* a){ int cont_e=0,cont_d=0; if(a==NULL){ return 0; }else{ cont_e=conta(a->esq); if(cont_e==0) cont_d=conta(a->dir); return 1; if((cont_e||cont_d)!=0){ cont_e=cont_e+cont_d+1; return cont_e; }else return -2; }
}
int main()
{
int op, x, r, op_imp,m; arvore *a=NULL; while(1) { printf("\nDgite a opçao desejada:\n"); printf("\t1-Iserir na arvore.\n"); printf("\t2-Remover no da arvore.\n"); printf("\t3-Balancear arvore\n"); printf("\t4-Buscar elemento na arvore.\n"); printf("\t5-Imprimir arvore.\n"); printf("\t6-Sair.\n"); scanf("%d",&op); switch(op) { case 1: printf("Qual valor deseja inserir:"); scanf("%d",&x); a=insere(a,x); // m=maior(a); //printf("%maior elemento atual=%d",m); break; case 2: printf("Digite o valor que deseja remover:"); scanf("%d", &x); a=remove_no(a, x); break; case 3: a=balancear(a); break; case