Escolar Documentos
Profissional Documentos
Cultura Documentos
Avl PDF
Avl PDF
– Algoritmos e Estruturas
– Estruturas de Dados I
de Dados
Roseli A. F. Romero
Árvores AVL – (Balanceadas) Definição
Roseli A. F. Romero
Árvores AVL (Balanceada) – Exemplo
-1
0
1
1 -1
0 0
0 0 0 0
0 0
0 0 0 0
Roseli A. F. Romero
Árvores AVL – (Balanceadas)
Se a probabilidade de pesquisar um
dado for a mesma para todos os dados,
uma árvore binária balanceada
determinará a busca mais eficiente.
Roseli A. F. Romero
Árvores AVL (Balanceada) – Exemplo
B – inserções
que mantêm
a árvore
balanceada.
B B
B BB B
U1 U2 U3 U4
Un – inserções não
balanceadas. U9 U10
U5 U6 U7 U8 U11 U12
Roseli A. F. Romero
Árvores Balanceadas - AVL
O desbalanceamento ocorre quando:
O NÓ é inserido é um descendente
esquerdo de um nó que tinha
balanceamento de 1 (U1 até U8)
OU
Roseli A. F. Romero
Árvores AVL (Balanceadas)
A transformação a ser feita na árvore tal que
ela se mantenha balanceada é chamada de
rotação.
A rotação poderá ser feita à esquerda ou à
direita dependendo do desbalanceamento que
tiver que ser solucionado.
A rotação deve ser realizada de maneira que
as regras 1 e 2 da transp. Anterior sejam
respeitadas.
Dependendo do desbalanceamento a ser
solucionado, apenas uma rotação não será
suficiente para resolvê-lo.
Roseli A. F. Romero
Árvores AVL – Rotação DIREITA
Percurso
A
C em Ordem:
B RHDIBEANJ
OFKCLGPMQ
D E F G
H I J K L M
R
N O P Q
DESBALANCEOU!
R I E
J K L M
ROTAÇÃO DIREITA
CONCLUÍDA
N O P Q
ÁRVORE ESTÁ NOVAMENTE BALANCEADA!!!
Roseli A. F. Romero
Árvores AVL – Rotação ESQUERDA
A Percurso
B C em Ordem:
HDIBEAJFRN
KOCLGPMQ
D E F G
H I J K L M
DESBALANCEOU!
N O P Q
R
ROTAÇÃO ESQUERDA Roseli A. F. Romero
Árvores AVL (Balanceadas)
Nos 2 exemplos anteriores de rotação a
esquerda e a direita as duas regras
foram mantidas:
o percurso em ordem da árvore
transformada deve ser o mesmo da
árvore original (isto é, a árvore
transformada continue sendo um árvore
de busca binária);
a árvore transformada continua
balanceada.
Roseli A. F. Romero
Árvores AVL (Balanceadas)
Para o rebalanceamento da árvore é
necessário calcular o Fator de Balanceamento
para verificar qual rotação deve ser efetuada
afim de rebalanceá-la.
Roseli A. F. Romero
Árvores AVL (Balanceadas)
FB(raiz)= Hd - He
4 - 2 = 2
8
FB(10)= Hd – He
4 10
3 - 2 = 1
9 15
Solução: rotação à esquerda
do nó 8, ou raiz. 12
RoseliNó inserido
A. F. Romero
Árvores AVL (Balanceadas)
8 15
4 9 12
Nó inserido
Roseli A. F. Romero
Árvores AVL (Balanceadas)
Caso 2: Nó raiz com FB 2 ou –2 com um filho
(na direção de onde houve a inserção) com FB
-1 ou 1 os quais possuem sinais trocados,
neste caso a solução é uma rotação dupla.
Roseli A. F. Romero
Árvores AVL (Balanceadas)
FB(raiz)=
8
2 - 4 = -2
4 10
FB(4)=
2 - 1 = 1
2 6
2 5 2 5 10
Roseli A. F. Romero
Árvores AVL (Balanceadas)
p
Algoritmo de Rotação à direita:
q 8
void rot_dir(NODEPTR p){ 4 10
NODEPTR q, temp;
q = p->esq; 2 6
temp
temp = q->dir; 5
q->dir = p; p
p->esq = temp;
p = q; 4
} 2 8
5 6 10
Roseli A. F. Romero
Árvores AVL (Balanceadas)
p
Roseli A. F. Romero
Árvores AVL (Balanceadas)
Roseli A. F. Romero