A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 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.

3 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

4 Rotação Simples à Direita q u p qp u Fatbal =0 Fatbal =0 Fatbal =0 Fatbal = 0 Nodo avô desequilibrado fatbal = -1 e fatbal do pai = -1 Ok árvore balanceada Avô => Pai => Volta

5 Rotação Simples à Esquerda pq u q p u Fatbal =01 0 Fatbal = 0 1 OK árvore balanceada Nodo avô desequilibrado fatbal=1 e pai fatbal=1. Avô => Pai => Volta

6 Rotação Dupla à Direita 0 q p u Fatbal = 0 Fatbal = 0 1 OK árvore balanceada u q p Rotação simples para esquerda entre u e q. up q Fatbal =0 Avô => Pai => Avô desequilibrado fatbal= -1 e pai = 1 Rotação simples à direita entre p e q. Volta

7 Rotação Dupla à Esquerda pu q u p q q p u Fatbal =0 0 Fatbal = 0 1 Uma rotação simples para direita entre u e q Uma rotação simples para esquerda entre p e q Fatbal = 0 Pai => Avô Avô desequilibrado fatbal =1 e pai = -1 OK árvore balanceada Volta


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google