Pesquisas de Dados (Parte 2)
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos
Conteúdo
Árvores Binárias:
Balanceamento
Árvores Binária: Balanceamento
Uma árvore binária balanceada é aquela em que a diferença entre as alturas das sub-
árvores de cada nó nunca é maior que 1.
O balanceamento de um nó de uma árvore binária balanceada (árvore AVL – Adelson- Velskii and Landis) é igual a 1, 0 ou –1,
dependendo da diferença entre as alturas das sub-árvores esquerda e direita.
Árvores Binária: Balanceamento
Exemplo de Árvore AVL
1
0 0 -1
0
0 0
1
0
0 0
0
0 0
-1
0 0
Árvores Binária: Balanceamento
Exemplo de Árvore não-AVL
1
0 0 -1
0
0 0
1
0
0 0
0
0 0
-2
0
Árvores Binária: Balanceamento
Balanceamento de Árvore Binária por Rotação Esquerda:
ponteiro tArvore GiraEsquerda (ponteiro tArvore raiz) { ponteiro tArvore novaRaiz
novaRaiz = raiz->direito
raiz->direito = novaRaiz->esquerdo novaRaiz->esquerdo = raiz
retorna novaRaiz }
-2
Árvores Binária: Balanceamento
Exemplo de balanceamento por rotação esquerda.
0
0 0
0
1 -1
1
-1
0
0 -1
0 1
A
B
C
D E
G
C
A
B D
F
E
G
Árvores Binária: Balanceamento
Balanceamento de Árvore Binária por Rotação Direita:
ponteiro tArvore GiraDireita (ponteiro tArvore raiz) { ponteiro tArvore novaRaiz
novaRaiz = raiz->esquerdo
raiz->esquerdo = novaRaiz->direito novaRaiz->direito = raiz
retorna novaRaiz }
Árvores Binária: Balanceamento
Exemplo de balanceamento por rotação direita.
0 0
0
1 -1
-1
1
0 1
0 B
D E
G
B
D
F
A
-1 C E G 0 2
0 A
C
Árvores Binária: Balanceamento
Características:
Árvores desbalanceada com valor negativo pode ser balanceada com rotação
esquerda;
Árvore desbalanceada com valor positivo pode ser balanceada com rotação direita;
Sempre que é efetuado uma rotação na árvore o seu balanceamento muda de sinal.
Árvores Binária: Balanceamento
Características:
Quando se efetua uma rotação esquerda ou direita numa árvore de busca binária, a ordem dos elementos percorrendo-a em ordem central não se altera.
Isto é, a árvore de busca binária continua ordenada.
Exercício
Dada a árvore binária ao lado, pede-se para balanceá-la aplicando operações de rotação à esquerda e/ou à
direita conforme necessário.
20
25
15 18
19
Solução
Primeiro aplica-se uma rotação à esquerda no nó 18 da árvore desbalanceada inicial.
20
25
15 18
19 2
-2
1
0
0
20
25
15 19
18
2
2
-1
0
0
Solução (Continuação)
Depois, basta aplicar uma rotação à direita no nó 20 da árvore obtida no passo anterior.
19
20
15 18
0
-1
0
-1 20
25
15 19
18
2
2
-1
0
0
0 25