Árvores avl

7
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

Upload: mufutau-robertson

Post on 01-Jan-2016

18 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Á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;

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

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

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

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

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

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

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