Você está na página 1de 3

rvore AVL e Rebalanceamento

http://www.icmc.usp.br/~sce182/arvbinrb.html

ndice > rvore > rvore Binria > rvore AVL e Rebalanceamento

Instituto de Cincias Matemticas de So Carlos Departamento de Computao e Estatstica SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graa Pimentel e Maria Cristina

rvore AVL e Rebalanceamento


rvore AVL:
1962: Matemticos Russos G.M. Adelson-Velskki e E.M.Landis sugeriram uma definio para "near balance" e descreveram procedimentos para insero e eliminao de ns nessas rvores: os algoritmos de balanceamento de rvore so chamados algoritmos AVL e as rvores so chamadas rvores AVL. Uma rvore AVL uma rvore binria de busca (ABB) construda de tal modo que a altura de sua subrvore direita difere da altura da subrvore esquerda de no mximo 1. Insero AVL: O que pode acontecer quando um novo n inserido numa rvore balanceada ? Dada uma raiz r com subrvores L (left) e R (right), e supondo que a insero deve ser feita na sub-rvore da esquerda. Podemos distriguir 3 casos: 1. Se hL = hR, ento L e R ficam com alturas diferentes mas continuam balanceadas. 2. Se hL < hR, ento L e R ficam com alturas iguais e balanceamento foi melhorado. 3. Se hL > hR, ento L fica ainda maior e balanceamento foi violado. Na rvore abaixo:

Ns 9 ou 11 podem ser inseridos sem balanaceamento . Subrvore com raiz 10 passa a ter uma subrvore e subrvore com raiz 8 vai ficar melhor balanceada ! Insero dos ns 3, 5 ou 7 requerem que a rvore seja rebalanceada! Fator de Balanceamento (FB) de um n a altura da subrvore direita do n menos a altura da subrvore esquerda do n Rebalanceamento: Os problemas podem ser mapeados para dois casos: Tipo 1: o n raiz de uma subrvore tem FB 2 (ou -2) e tem um filho com FB 1 (-1) o qual tem o mesmo sinal que o FB do n pai. Exemplos: Exemplo 1: Exemplo 2:

1 de 3

25/2/2008 20:37

rvore AVL e Rebalanceamento

http://www.icmc.usp.br/~sce182/arvbinrb.html

soluo: rotao simples sobre o n de FB=2 (-2). Rotaes so feitas esquerda quando FB positivo e direita quando FB negativo. -> De acordo com o demonstrado em sala de aula, fazer as rotaes adequadas para o re-balanceamento das rvores dos exemplos 1 e 2 acima.

algoritmo para rotao direita sobre o n p


procedure rotacao_direita (Var p:pno); Var q, temp: pno; begin q = esq(p); temp = dir(q); dir(q) = p; esq(p) = temp; end;

algoritmo para rotao esquerda sobre o n p rotao_esquerda(p)


procedure rotacao_esquerda(Var p: pno;); Var q, temp: pno; begin q = dir(p); temp = esq(q); esq(q) = p; dir(p) = temp; end;

Tipo 2: o n raiz de uma subrvore tem FB=2 (ou -2) e tem uma um filho com FB=-1 (1) o qual tem o sinal oposto ao FB do n pai. Exemplo: Caso (-2) (1) FB do n que contm 8: -2 FB do n que contm 4: 1

2 de 3

25/2/2008 20:37

rvore AVL e Rebalanceamento

http://www.icmc.usp.br/~sce182/arvbinrb.html

soluo: duas rotaes 1. primeiro roda-se o n com FB=1 (-1) na direo apropriada 2. depois roda-se o n que tinha FB=-2 (2) na direo oposta Rotao de 4 esquerda

Rotao de 8 direita

-> Elaborar um caso (2) (-1) e executar o re-balanceamento. -> Re-fazer os algoritmos de rotao esquerda e direita, considerando o caso geral de re-balanceamento de sub-rvores, utilizando a definio inicial de rvora binria (tree).

rvore Binria

ndice

3 de 3

25/2/2008 20:37

Você também pode gostar