Árvores avl
DESCRIPTION
Árvores AVL. Definição : Uma árvore binária vazia é sempre balanceada por altura. Se T não é vazia e TL e TR são suas sub-árvores da esquerda e direita, então T é balanceada por altura se: 1. TL e TR são balanceadas por altura; - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/1.jpg)
Definição: Uma árvore binária vazia é sempre balanceada por altura. Se T não é vazia e TL e TR são suas sub-árvores da esquerda e direita, então T é balanceada por altura se:
1. TL e TR são balanceadas por altura;
2. |hl - hr|<=1, onde hl e hr são as alturas de TL e TR respectivamente.
Adelson-Velskii e Landis em 1962 apresentaram uma árvore de busca binária que é balanceada com respeito a altura das sub-árvores. Uma característica importante deste tipo de árvore é que uma busca é realizada em O(lg(n)) se a árvore possui n nós.
Árvores AVL
![Page 2: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/2.jpg)
INSERSÃO
A inserção em árvores AVL e basicamente a mesma das árvores binárias com algumas considerações para manter o balanceamento da árvore.
Uma breve explicação sobre o Algoritmo de Inserção
Todo novo nodo inserido tem fator de balanceamento igual a zero.
O algoritmo é recursivo (não necessariamente) isso, cria um caminho entre o nodo inserido e a raiz.
O algoritmo sendo recursivo faz a verificação de balanceamento no desempilhar das suas chamadas.
Se for inserido um nodo à esquerda o fator de balanceamento do nodo pai tornar-se-a -1.
Se for inserido um nodo à direita o fator de balanceamento do nodo pai tornar-se-a 1.
![Page 3: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/3.jpg)
Se um nodo for inserido à esquerda e o fator de balanceamento de seu avô for = -1 e seu pai também tiver fatbal = -1 é feita uma rotação simples à direita.
Se um nodo for inserido à direita e o fator de balanceamento de seu avô for = 1 e seu pai também tiver fatbal = 1 é feita uma rotação simples à esquerda.
Se um nodo for inserido à esquerda e o fator de balanceamento de seu avô for = -1 e seu pai tiver fatbal =1 à e feita uma rotação dupla para direita.
Se um nodo for inserido à direita e o fator de balanceamento de seu avô for = 1 e seu pai tiver fatbal = -1 é feita um rotação dupla a esquerda.
É necessário ressaltar que o balanceamento de uma sub-árvore TL pertencente a árvore T não implica que T também esteja balanceada pois, a ação de ajuste da sub-árvore TL pode ter desequilibrado a árvore T, então o algoritmo deve tratar esta situação, mas sendo o algoritmo recursivo este caso será verificado a cada desempilhar da chamada anterior e assim será garantido que a árvore T esteja balanceada.
Ver
Ver
Ver
Ver
![Page 4: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/4.jpg)
Rotação Simples à Direita
q
u
p
q p
u
Fatbal = 0-1
Fatbal = 0-1
Fatbal = 0
Fatbal = 0
Fatbal = 0 Fatbal = 0
Nodo avô desequilibrado fatbal = -1 e fatbal do pai = -1
Ok árvore balanceada
Avô =>
Pai =>
Volta
![Page 5: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/5.jpg)
Rotação Simples à Esquerda
p q
u
q
p
u
Fatbal = 01
Fatbal = 0
Fatbal = 0
1
OK árvore balanceada
Nodo avô desequilibrado fatbal=1 e pai fatbal=1.
Avô =>
Pai =>
Volta
![Page 6: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/6.jpg)
Rotação Dupla à Direita
0-1
q
p
u
Fatbal =
Fatbal = 0
Fatbal = 0
1
OK árvore balanceada
u
q
p
Rotação simples para esquerda entre u e q.
u p
q Fatbal =0
Fatbal =0 Fatbal =0
Avô =>
Pai =>
Avô desequilibrado fatbal= -1 e pai = 1
Rotação simples à direita entre p e q.
Volta
![Page 7: Árvores AVL](https://reader035.vdocuments.pub/reader035/viewer/2022072016/568132c0550346895d9981eb/html5/thumbnails/7.jpg)
Rotação Dupla à Esquerda
p u
q
u
p
q
q
p
u
Fatbal = 0
Fatbal = 0
Fatbal = 0
1
-1
Uma rotação simples para direita entre u e q
Uma rotação simples para esquerda entre p e q
Fatbal = 0
Fatbal = 0 Fatbal = 0
Pai =>
Avô
Avô desequilibrado fatbal =1 e pai = -1
OK árvore balanceada
Volta