Вы находитесь на странице: 1из 29

AVL

Equipe 2:
Amanda de Paula
Joeline Dutra
Rebeca Nunes

Contedo

Histria
Conceito
Fator de Balanceamento
Aplicao
Estrutura de dados
Rotao
Simples
Dupla

Qual rotao usar?


Insero
Remoo

Histria
Foi proposta em 1962.
Os matemticos Georgy Adelson-Velsky e Evgenii Landis so
os seus criadores.
A ideia era de uma rvore binria balanceada dinamicamente.
Ou seja, enquanto o dado est sendo inserido.
Este tipo de rvore ficou conhecida como rvore AVL, pelas
iniciais dos nomes dos seus inventores

Histria

Georgy Maximovich AdelsonVelsky


(1922-2014)

Evgenii Mikhailovich Landis


(1921-1997)

Conceito
O diferencial da rvore AVL que seu balanceamento feito
enquanto se adiciona.
O balanceamento feito por rotaes, que podem ser simples
ou duplas, para a direita ou para a esquerda.
A complexidade da rvore no pior caso de 1,44 log n
Essa complexidade se deve ao fato de que a rvore
balanceada dinamicamente.

Conceito
O fator chave da AVL balanceamento.
Balanceamento relacionado ao equilbrio da rvore.
Se ela est maior para um lado do que para o outro,
dependendo de seu tipo, pode no estar em equilbrio.
Como verificar se uma rvore est balanceada? Com o fator
de balanceamento.

Fator de balanceamento
Enquanto para ns algo visual, a mquina apenas processa
dados. Logo o fator de balanceamento se torna necessrio.
O fator de balanceamento (FB) para uma rvore AVL s pode
ser 1, 0 ou -1.
O fator de balanceamento de uma folha sempre 0.
FB=hD-hE
-1
+1

+1

hE
0

hD

Fator de balanceamento
rvores desbalanceadas:
1
8
3
9

5
7
9

Aplicao
Redes de comunicao:
Na reconstruo de mensagens
Ordenando os pacotes
Descartando os repetidos

Codificao de Huffman:
Compresso e descompresso de arquivos

Estrutura de dados
typedef struct no {
int chave;
int fb;
struct no *Pai; //Opcional
struct no *FilhoEsquerdo
struct no *FilhoDireito
} no;

Rotao
Existem 4 tipos de rotao para a rvore AVL.
Elas so:

Rotao para a esquerda ou Esquerda simples (RE)


Rotao para a direita ou Direita simples (RD)
Dupla rotao para a esquerda ou Rotao Direita-Esquerda (RDE)
Dupla rotao para a direita ou Rotao Esquerda-Direita (RED)

Rotao para a esquerda


a

a
Insere c

FB(c)=0
FB(b)=+1
FB(a)=+2

Balanceando:
a
b

Rotaciona
c

FB(a)=0
FB(c)=0
FB(b)=0

b
a

Passo a passo

Ap = P;
Af = Ap->FilhoDireito; (F)
Ap->FilhoDireito= Af->FilhoEsquerdo;
Af->FilhoEsquerdo = Ap;
Ap = Af;
F

P
F

Rotao para a direita


c

c
Insere a

FB(a)=0
FB(b)=-1
FB(c)=-2

b
a

Balanceando:
c
b
a

Rotaciona
a

FB(a)=0
FB(c)=0
FB(b)=0

Passo a passo

Ap = P;
Af = Ap->FilhoEsquerdo; (F)
Ap->FilhoEsquerdo = Af->FilhoDireito;
Af->FilhoDireito = Ap;
Ap = Af;
P
F

F
P

Dupla rotao para a esquerda


a

a
Insere b

c
b

FB(b)=0
FB(c)=-1
FB(a)=+2

Balanceando:
Primeiro a sub-rvore
c
b

b
Rotao para
a direita

Resultando
c
FB(c)=0
FB(b)=+1
FB(a)=+2

b
c

Dupla rotao para a esquerda


Voltando para a rvore:

a
b
c

Rotao
para a
esquerda

FB(a)=0
FB(c)=0
FB(b)=0

b
a

Passo a passo

Ap = P;
Af = Ap->FilhoDireito; (F)
An = Af->FilhoEsquerdo; (N)
Af->FilhoEsquerdo = An->FilhoDireito;
An->FilhoDireito = Af;
Ap->FilhoDireito = An->FilhoEsquerdo;
An->FilhoEsquerdo = Ap;
Ap = An;
N
P

P
F
N

Dupla rotao para a direita


c

c
Insere b

FB(b)=0
FB(a)=+1
FB(c)=-2

Balanceando:
Primeiro a sub-rvore
b

a
b

Rotao para
a esquerda

c
Resultando

a
FB(c)=0
FB(b)=-1
FB(a)=-2

Dupla rotao para a direita


Voltando para a rvore:

c
b
a

Rotao
para a
direita

FB(a)=0
FB(c)=0
FB(b)=0

b
a

Passo a passo

Ap = P;
Af = Ap->FilhoEsquerdo; (F)
An = Af->FilhoDireito; (N)
Af->FilhoDireito = An->FilhoEsquerdo;
An->FilhoEsquerdo = Af;
Ap->FilhoEsquerdo = An->FilhoDireito;
An->FilhoDireito = Ap;
Ap = An;
N
F

F
N

Qual rotao usar?


Diferena de
altura de um n

Diferena de altura do n
filho do n desbalanceado

Tipo de rotao

Simples esquerda

-1

Dupla com filho para a


direita e pai para a
esquerda

Dupla com filho para a


esquerda e pai para a
direita

-1

Simples direita

-2

Insero
Do mesmo modo que na rvore binria.
Inserir e calcular o FB.
Se FB for diferente de -1, 0 e 1, fazer rotao at que esteja
novamente balanceada.
Exemplo:

Remoo
Remoo normal como em ABB
Rebalanceamento

Dvidas?

Referncias
Geral:
WALKER, Julienne. AVL trees. Disponvel em:
http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut
_avl.aspx

Criadores da AVL:
WIKIPEDIA. Evgenii Landis. Disponvel em:
http://en.wikipedia.org/wiki/Evgenii_Landis
WIKIPEDIA. Georgy Adelson-Velsky. Disponvel em:
http://en.wikipedia.org/wiki/Georgy_Adelson-Velsky

Fator de balanceamento:
rvore AVL. Disponvel em:
http://www.passeidireto.com/arquivo/2536633/arvore-avl

Referncias
Complexidade e aplicao:
TOFFOLO, Tlio. rvores AVL. Disponvel em:
http://www.decom.ufop.br/toffolo/site_media/uploads/20111/bcc202/slides/25._arvores_%28parte_2%29.pdf

Codificao de Huffman:
BORGES, Henrique. Algoritmo de Huffman. Disponvel em:
http://www.youtube.com/watch?v=2yWfo50jZiw
COSTA, Jean. Algoritmo de Huffman. Disponvel em:
http://www.youtube.com/watch?v=MXI4LWgDucA
WIKIPDIA. Codificao de Huffman. Disponvel em:
http://pt.wikipedia.org/wiki/Codifica%C3%A7%C3%A3o_de_Huff
man

Referncias
Estrutura de dados:
DUTRA, Caio. rvore Binria AVL. Disponvel em:
http://www.vivaolinux.com.br/script/Arvore-binaria-AVL

Rotao:
ANDRADE, Lvia. rvores AVL. Disponvel em:
http://www.passeidireto.com/arquivo/1012626/aula-5_arvoreavl
HARGROVE, John. The AVL Tree Rotations Tutorial. Disponvel em:
http://pages.cs.wisc.edu/~paton/readings/liblitVersion/AVL-TreeRotations.pdf
NASCIMENTO, Edson. rvore AVL. Disponvel em:
http://colabweb.ufam.edu.br/pluginfile.php/14107/mod_resourc
e/content/3/aed2_10_Arvore%20AVL.pdf

Referncias
Insero e Remoo:
BUENO, Letcia. rvores AVL. Disponvel em:
http://professor.ufabc.edu.br/~leticia.bueno/classes/aed2/materi
ais/avl.pdf
MORRIS, John. AVL trees. Disponvel em:
https://www.cs.auckland.ac.nz/software/AlgAnim/AVL.html

Вам также может понравиться