Arvore avl
SISTEMAS DE INFORMAÇÃO
GEOVANE ALVES DE CARVALHO
ALISON DE OLIVEIRA SILVA
aRVORE AVL
IPATINGA – MG
2011
GEOVANE ALVES DE CARVALHO
ALISON DE OLIVEIRA SILVA
aRVORE bINÁRIA
Trabalho apresentado ao Professor Filipe Costa Fernandes, da disciplina Estruturas de Dados II, da turma SINF3, turno noturno, do curso de Sistema de Informação
UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS
IPATINGA - 2011
Sumário
Sumário 2
código fonte 3
1 objetivo 11
2 Algoritmo original 12
3 Finalizando 12
4 REFERÊNCIAS 14
código fonte
#include #include #include #include
typedef int tipochave;
typedef struct registro { tipochave chave; }registro;
typedef struct no *apontador;
typedef struct no { int fb; //Fator de Balanceamento da AVL. registro reg; //Os dados. apontador esq, dir; //A esquerd e a Direita. }no;
typedef apontador tipodicionario;
//FUNÇÃO PARA RETORNAR A ALTURA ARVORE. int CalculaH(apontador *p){ if (*p == NULL){ return -1; } int HEsq=0 , HDir=0; HEsq = (CalculaH(&(*p)->esq)+1); HDir = (CalculaH(&(*p)->dir)+1); if (HEsq > HDir){ return HEsq; } else{ return HDir; } }
//ROTAÇÂO SIMPLES PARA A DIREITA. void RotacaoDir (apontador *Pai){ apontador aux1 = (*Pai)->dir->esq; apontador aux2 = (*Pai)->dir; (*Pai)->dir->esq = (*Pai); (*Pai)->dir = aux1; (*Pai)= aux2; }
//ROTAÇÂO SIMPLES PARA A ESQUERDA. void RotacaoEsq (apontador *Pai){ apontador aux1 = (*Pai)->esq->dir; apontador aux2 = (*Pai)->esq; (*Pai)->esq->dir =