Você está na página 1de 58

rvores Balanceadas

Prof. Csar Angonese

rvores Balanceadas
Aspecto importante em arvores , naturalmente, o custo de
acesso a uma chave desejada.
As rvores binrias que foram estudadas at o presente momento
quando implementadas oferecem um baixo custo de acesso, mas
com um certo nmero de inseres e remoes este custo fica
elevado.
Para manter este custo ao longo da utilizao, a estrutura deve
ser alterada periodicamente de forma a moldar os novos dados,
esta estrutura denominada de Balanceada.

rvores Completas

So aquelas que minimizam o nmero de comparaes efetuadas no


pior caso para uma busca com chaves de probabilidades de
ocorrncia idnticas.

Exemplo ruim p/restabelecimento de


rvores completas

Possibilidade de incluso sem


aumento de altura
Existe somente uma possibilidade:
- Incluso de uma chave maior que todas as demais

Se ao contrrio for includo um n de chave menor do que todas as


outras;
- Deixaria de ser completa

Incluso do n com chave O (Zero)

Transformar em rvore completa


Para transformar esta ltima em uma rvore completa:
- Necessrio alterar a posio na estrutura de todos os seus
ns;

- O custo para restabelecer a estrutura excessivo

rvores AVL
Uma rvore binria denominada AVL quando para qualquer n as
alturas de suas duas subrvores, esquerda e direita, diferem em
mdulo de at uma unidade.

uma rvore AVL

No uma rvore AVL

rvore AVL
rvores de altura balanceada ou de altura
equilibrada foram introduzidas em 1962 por
Adelson-Velskii e Landis, tambm conhecidas
como rvores AVL
A definio de uma rvore binria de altura
equilibrada (AVL) requer que cada subrvore
seja tambm de altura equilibrada

Incluso em rvore AVL


Uma rvore na qual sero efetuadas incluses de ns. Para que se
mantenha uma rvore AVL aps as incluses necessrio efetuar
operaes de restabelecimento de regulagem de seus ns, quando
necessrio.
A ideia consiste em verificar, aps cada incluso, se algum n p se
encontra desregulado, isto , se a diferena de altura entre as duas
sub-rvores de p tornou-se maior do que um. Em caso positivo,
aplicar transformaes apropriadas para regul-lo.

rvores Balanceadas
Suponha que o n q foi includo em T. Se aps a incluso todos os ns
se mantiveram regulados, ento a rvore manteve-se AVL e no h
nada a efetuar. Caso contrario, seja p o n mais prximo s folhas de
T que se tornou desregulado. Ento p se encontra no caminho de q
raiz de T, e sua escolha nica.
Concluise que em uma rvore AVL a incluso de um n no pode
aumentar em mais de uma unidade de altura de qualquer sub-rvore.

Fator de Balanceamento
O fator de balanceamento ou fator de
equilbrio de um n T em uma rvore binria
definido como sendo hL hR onde hL e hR
so as alturas das subrvores esquerda e
direita de T, respectivamente.
Para qualquer n T numa rvore AVL, o fator
de balanceamento assume o valor -1, 0 ou +1
O fator de balanceamento de uma folha
zero

Possveis rotaes em uma rvore


desbalanceada
Diferena de
Altura de um n
2

Diferena de altura do n
Filho do n desbalanceado

Tipo de rotao

Simples direita

Simples direita

-1

Dupla com filho para a


esquerda e pai
Para a direita

Dupla com filho para a


direita e pai para a esquerda

Simples esquerda

-1

Simples esquerda

-2

Tipos de rotaes em rvores

Tipos de rotaes em rvores

Tipos de rotaes em rvores

Tipos de rotaes em rvores

Fator de Balanceamento

Fator de Balanceamento

Remoo em rvore AVL

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Remoo

Implementao da incluso
Seja T uma rvore AVL e x a chave a ser includa em algum novo n q.
O processo completo de incluso pode ser dividido da seguinte forma:
- Efetua-se uma busca em T para verificar se x existe;
- Caso afirmativo processo encerrado;
- Caso negativo:
A busca encontra o local da incluso;
Em seguida verifica-se se algum n esta desregulado;
Caso negativo processo termina;
Caso afirmativo a regulagem de T deve ser
efetuada

Implementao da incluso
Como verificar se algum n v em T tornou-se desregulado aps a
incluso:
Para isso basta determinar as alturas de suas duas sub-rvores e
subtrair uma da outra.

Balano(v) = hd(v) He(v)


Observa-se que v est regulado se e somente se -1 <= balanco <= 1

Implementao da incluso
Caso 1: balano(v) = 1 antes da incluso
Neste caso, balano(v) torna-se 0(zero) e a altura da sub-rvore
de raiz v no foi modificada

Caso 2: balano(v) = 0 antes da incluso


Neste caso, balano(v) torna-se -1 e a altura da sub-rvore de raiz
v foi modificada. Consequentemente, os ns restantes do caminho
at a raiz tambm podem ter suas alturas modificadas e devem ser
analisados

Implementao da incluso
Caso 3: balano(v) = -1 antes da incluso
Neste caso, balano(v) torna-se -2 e o n esta desregulado. A
rotao correta deve ser empregada.

Algoritmo
,aux, tipo)
If (raiz == NULL)
raiz = pt;
If (aux != NULL)
if (tipo == E)
aux->esq = pt;
else
aux->dir = pt;

also

also

,Aux, tipo)
,aux,tipo)
erdadeiro

,pt, E)

also

,pt, D)

also

Exerccio

Desenhar a rvore AVL conforme ns abaixo:


Inserir n 30
Inserir n 50
Inserir n 80
Inserir n 20
Inserir n 10
Inserir n 25
Inserir n 70
Remoo do n 30
Remoo do n 20
Remoo do n 10
Remoo do n 25
Insero n 75
Remoo n 50

Você também pode gostar