ÁRVORE AVL. Problema do balanceamento

Documentos relacionados
Árvores Binárias Balanceadas Estrutura de Dados I

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção.

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Árvores binárias de busca

Uma árvore binária de busca não garante acesso em tempo logarítmico.

Árvores Binárias de Busca

Árvores Binárias de Busca

Árvores AVL (Adelson-Velskii and Landis)

Linguagem C: Árvores AVL

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores binárias de busca

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11

Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

INE5408 Estruturas de Dados

Dicionários. TAD Orientado a conteúdo

Árvores Vermelho-Preto

Árvores Vermelho-Preto

Árvores de pesquisa. Árvores de pesquisa equilibradas

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Árvores binárias de busca

Árvores AVL e Árvores B. Jeane Melo

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

AED2 - Aulas 06 e 07 Árvores AVL e rubro-negras

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Aula 13 Árvores Adelson-Velskii e Landis

Aula 10 Árvores Adelson-Velskii e Landis

Árvores balanceadas. Aleardo Manacero Jr.

Universidade Federal de Mato Grosso Estrutura de Dados II

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores AVL. Prof. Robinson Alves

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

PROGRAMAÇÃO III (LTSI)

Árvores Rubro-Negra IFRN

DAINF - Departamento de Informática

UNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL*

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela

ÁRVORES BALANCEADAS (AVL)

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco.

GGI026 - Árvore rubro-negra

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Métodos de Pesquisa de Dados

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

Árvores Binárias de Busca (ABB) 18/11

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Árvores Equilibradas. Sumário

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão)

Árvores & Árvores Binárias

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores de Pesquisa (Parte II)

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

EAD Árvore - representação usando listas ligadas

Árvores. Prof. César Melo ICOMP/UFAM

GGI026 - Árvore rubro-negra - Remoção

Árvore binária - definição

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Universidade Federal de Mato Grosso

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

AED2 - Aula 04 Vetores ordenados e árvores de busca

Pesquisa em memória primária

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Linguagem Haskell. Maria Adriana Vidigal de Lima

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

ÁRVORE BINÁRIA DE BUSCA

Estruturas de Dados com Jogos. Capítulo 8 Árvores

Árvores Binárias de Busca

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Árvore Binária de Busca. Prof. César Melo

{ = == NULL) = == NULL)

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Árvores & Árvores Binárias

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Árvores de Pesquisa (Parte II)

INF 1010 Estruturas de Dados Avançadas

Estruturas de Dados II

Transcrição:

ÁRVORE VL Prof. ndré ackes Problema do balanceamento 2 eficiência da busca em uma árvore binária depende do seu balanceamento. O(log N), se a árvore está balanceada O(N), se a árvore não está balanceada N corresponde ao número de nós na árvore 1

Problema do balanceamento 3 Infelizmente, os algoritmos de inserção e remoção em árvores binárias não garantem que a árvore gerada a cada passo esteja balanceada. Dependendo da ordem em que os dados são inseridos na árvore, podemos criar uma árvore na forma de uma escada Problema do balanceamento 4 Inserção dos valores {1,2,3,10,4,5,9,7,8,6} 1 fb = -8 2 fb = -7 3 fb = -6 10 fb = +5 4 fb = -4 5 fb = -3 9 fb = +2 7 6 8 2

Problema do balanceamento 5 Solução para o problema de balanceamento Modificar as operações de inserção e remoção de modo a balancear a árvore a cada nova inserção ou remoção. Garantir que a diferença de alturas das sub-árvores esquerda e direita de cada nó seja de no máximo uma unidade Exemplos de árvores balanceadas Árvore VL Árvore 2-3-4 Árvore Rubro-Negra Árvore VL 6 Definição Tipo de árvore binária balanceada com relação a altura das suas sub-árvores riada por delson-velskii e Landis, de onde recebeu a sua nomenclatura, em 1962 3

Árvore VL 7 Definição Permite o rebalanceamento local da árvore penas a parte afetada pela inserção ou remoção é rebalanceada Usa rotações simples ou duplas na etapa de rebalanceamento Executadas a cada inserção ou remoção s rotações buscam manter a árvore binária como uma árvore quase completa usto máximo de qualquer algoritmo é O(log N) Árvore VL 8 Objetivo das rotações: orrigir o fator de balanceamento (ou fb) Diferença entre as alturas das sub-árvore de um nó aso uma das sub-árvores de um nó não existir, então a altura dessa sub-arvore será igual a -1. Fator de alanceamento F = E - D E ltura da sub-árvore ESQUERD fb = +2 D ltura da sub-árvore DIREIT 4

Árvore VL 9 s alturas das sub-árvores de cada nó diferem de no máximo uma unidade O fator de balanceamento deve ser +1, 0 ou -1 Se fb > +1 ou fb < -1: a árvore deve ser balanceada naquele nó fb = +2 fb = -1 Necessidade de rebalanceamento Árvore VL 10 Voltando ao problema anterior Inserção dos valores {1,2,3,10,4,5,9,7,8,6} 4 fb = -1 2 7 1 3 5 fb = -1 9 6 8 10 5

TD Árvore VL 11 Definindo a árvore riação e destruição: igual a da árvore binária TD Árvore VL 12 alculando o fator de balanceamento 6

Rotações 13 Objetivo: corrigir o fator de balanceamento (ou fb) de cada nó Operação básica para balancear uma árvore VL o todo, existem dois tipos de rotação Rotação simples Rotação dupla Rotações 14 s rotações diferem entre si pelo sentido da inclinação entre o nó pai e filho Rotação simples O nó desbalanceado (pai), seu filho e o seu neto estão todos no mesmo sentido de inclinação Rotação dupla O nó desbalanceado (pai) e seu filho estão inclinados no sentido inverso ao neto Equivale a duas rotações simples. 7

Rotações 15 o todo, existem duas rotações simples e duas duplas: Rotação simples a direita ou Rotação LL Rotação simples a esquerda ou Rotação RR Rotação dupla a direita ou Rotação LR Rotação dupla a esquerda ou Rotação RL Rotações 16 Rotações são aplicadas no ancestral mais próximo do nó inserido cujo fator de balanceamento passa a ser +2 ou -2 pós uma inserção ou remoção, devemos voltar pelo mesmo caminho da árvore e recalcular o fator de balanceamento, fb, de cada nó Se o fb desse nó for +2 ou -2, uma rotação deverá ser aplicada 8

Rotação LL 17 Rotação LL ou rotação simples à direita Um novo nó é inserido na sub-árvore da esquerda do filho esquerdo de é o nó desbalanceado Dois movimentos para a esquerda: LEFT LEFT É necessário fazer uma rotação à direita, de modo que o nó intermediário ocupe o lugar de, e se torne a sub-árvore direita de Rotação LL 18 Exemplo fb = +1 < > fb = +2 > < > Rotação LL em < > > < > 9

TD Árvore VL 19 Rotação LL Rotação LL 20 fb = +1 Árvore VL e fator de balanceamento de cada nó D E 10

Rotação LL 21 F *raiz fb = +2 no fb = +1 D fb = +1 E Inserção do nó F na árvore Árvore fica desbalanceada no nó. plicar Rotação LL no nó no = (*raiz)->esq; (*raiz)->esq = no->dir; no->dir = *raiz; *raiz = no; Rotação LL 22 *raiz D fb = +1 Árvore alanceada F E 11

Rotação RR 23 Rotação RR ou rotação simples à esquerda Um novo nó é inserido na sub-árvore da direita do filho direito de é o nó desbalanceado Dois movimentos para a direita: RIGHT RIGHT É necessário fazer uma rotação à esquerda, de modo que o nó intermediário ocupe o lugar de, e se torne a sub-árvore esquerda de Rotação RR 24 Exemplo < fb = -2 > < fb = -1 < > Rotação RR em < > < < > 12

TD Árvore VL 25 Rotação RR Rotação RR 26 fb = -1 Árvore VL e fator de balanceamento de cada nó D E 13

Rotação RR 27 *raiz D fb = -2 no fb = -1 E fb = -1 F Inserção do nó F na árvore Árvore fica desbalanceada no nó. plicar Rotação RR no nó no = (*raiz)->dir; (*raiz)->dir = no->esq; no->esq = (*raiz); (*raiz) = no; Rotação RR 28 *raiz E fb = -1 Árvore alanceada D F 14

Rotação LR 29 Rotação LR ou rotação dupla à direita Um novo nó é inserido na sub-árvore da direita do filho esquerdo de é o nó desbalanceado Um movimento para a esquerda e outro para a direita: LEFT RIGHT É necessário fazer uma rotação dupla, de modo que o nó se torne o pai dos nós (filho da direita) e (filho da esquerda) Rotação RR em Rotação LL em Rotação LR 30 Exemplo: primeira rotação fb = +2 fb = +2 fb = -1 < < > Rotação RR em fb = +1 > > > < > > > < < < > 15

Rotação LR 31 Exemplo: segunda rotação fb = +1 fb = +2 > Rotação LL em > > < < < > > > > < < < > Rotação LR 32 fb = +1 Árvore VL e fator de balanceamento de cada nó D E 16

Rotação LR 33 fb = +2 Inserção do nó F na árvore fb = -1 Árvore fica desbalanceada no nó. D E fb = +1 plicar Rotação LR no nó. Isso equivale a: F - plicar a Rotação RR no nó - plicar a Rotação LL no nó Rotação LR 34 fb = +2 E fb = +2 Árvore após aplicar a Rotação RR no nó D F 17

Rotação LR 35 E fb = -1 Árvore após aplicar a Rotação LL no nó Árvore alanceada D F Rotação RL 36 Rotação RL ou rotação dupla à esquerda um novo nó é inserido na sub-árvore da esquerda do filho direito de é o nó desbalanceado Um movimento para a direita e outro para a esquerda: RIGHT LEFT É necessário fazer uma rotação dupla, de modo que o nó se torne o pai dos nós (filho da esquerda) e (filho da direita) Rotação LL em Rotação RR em 18

Rotação RL 37 Exemplo fb = -2 fb = -2 < fb = +1 > > Rotação LL em < < < fb = -1 < < > < > < > > Rotação RL 38 Exemplo < fb = -2 < < fb = -1 > < > > Rotação RR em < < < > < > > 19

Rotação RL 39 fb = -1 Árvore VL e fator de balanceamento de cada nó D E Rotação RL 40 fb = -2 Inserção do nó F na árvore fb = +1 Árvore fica desbalanceada no nó. D fb = -1 E plicar Rotação RL no nó. Isso equivale a: F - plicar a Rotação LL no nó - plicar a Rotação RR no nó 20

Rotação RL 41 fb = -2 D fb = -2 Árvore após aplicar a Rotação LL no nó F E Rotação RL 42 fb = +1 D F E Árvore após aplicar a Rotação RR no nó Árvore alanceada 21

Quando usar cada rotação? 43 Uma dúvida muito comum é quando utilizar cada uma das quatro rotações Fator de alanceamento de Fator de alanceamento de +2 +1-2 -1 +2-1 -2 +1 Posições dos nós e em relação ao nó é filho à esquerda de é filho à esquerda de é filho à direita de é filho à direita de é filho à esquerda de é filho à direita de é filho à de direita é filho à esquerda de Rotação LL RR LR RL Quando usar cada rotação? 44 Sinais iguais: rotação simples Sinal positivo: rotação à direita (LL) Sinal negativo: rotação à esquerda (RR) Fator de alanceamento de Fator de alanceamento de +2 +1-2 -1 +2-1 -2 +1 Posições dos nós e em relação ao nó é filho à esquerda de é filho à esquerda de é filho à direita de é filho à direita de é filho à esquerda de é filho à direita de é filho à de direita é filho à esquerda de Rotação LL RR LR RL 22

Quando usar cada rotação? 45 Sinais diferentes: rotação dupla positivo: rotação dupla a direita (LR) negativo: rotação dupla a esquerda (RL) Fator de alanceamento de Fator de alanceamento de +2 +1-2 -1 +2-1 -2 +1 Posições dos nós e em relação ao nó é filho à esquerda de é filho à esquerda de é filho à direita de é filho à direita de é filho à esquerda de é filho à direita de é filho à de direita é filho à esquerda de Rotação LL RR LR RL Árvore VL: Inserção 46 Para inserir um valor V na árvore Se a raiz é igual a NULL, insira o nó Se V é menor do que a raiz: vá para a subárvore esquerda Se V é maior do que a raiz: vá para a sub-árvore direita plique o método recursivamente Dessa forma, percorremos um conjunto de nós da árvore até chegar ao nó folha que irá se tornar o pai do novo nó 23

Árvore VL: Inserção 47 Uma vez inserido o novo nó Devemos voltar pelo caminho percorrido e calcular o fator de balanceamento de cada um dos nós visitados plicar a rotação necessária para restabelecer o balanceamento da árvore se o fator de balanceamento for +2 ou -2 TD Árvore VL 48 Inserção 24

TD Árvore VL 49 Inserção TD Árvore VL 50 Inserção 25

Árvore VL: Inserção 51 Insere valor: 1 1 Insere valor: 2 fb = -1 1 2 Insere valor: 3 1 fb = -2 2 fb = -1 Nó 1 desbalanceado plicar Rotação RR 2 1 3 3 Árvore VL: Inserção 52 Insere valor: 10 fb = -1 2 fb = -1 1 3 10 26

Árvore VL: Inserção 53 Insere valor: 4 Nó 3 desbalanceado plicar Rotação RL 2 fb = -2 fb = -2 2 fb = -1 1 3 1 4 fb = +1 10 3 10 4 Árvore VL: Inserção 54 Insere valor: 5 fb = -2 2 fb = -1 1 4 fb = +1 3 10 Nó 2 desbalanceado plicar Rotação RR 4 fb = +1 2 10 1 3 5 5 27

Árvore VL: Inserção 55 Insere valor: 9 fb = -1 4 fb = +2 2 10 Nó 10 desbalanceado plicar Rotação LR 4 2 9 1 3 5 fb = -1 9 1 3 5 10 Árvore VL: Remoção 56 omo na inserção, temos que percorremos um conjunto de nós da árvore até chegar ao nó que será removido Existem 3 tipos de remoção Nó folha (sem filhos) Nó com 1 filho Nó com 2 filhos 28

Árvore VL: Remoção 57 Uma vez removido o nó Devemos voltar pelo caminho percorrido e calcular o fator de balanceamento de cada um dos nós visitados plicar a rotação necessária para restabelecer o balanceamento da árvore se o fator de balanceamento for +2 ou -2 Remover um nó da sub-árvore direita equivale a inserir um nó na sub-árvore esquerda TD Árvore VL 58 Remoção Trabalha com 2 funções usca pelo nó Remoção do nó com 2 filhos 29

TD Árvore VL 59 Remoção TD Árvore VL 60 Remoção 30

TD Árvore VL 61 Remoção Pai tem 1 ou nenhum filho Pai tem 2 filhos: Substituir pelo nó mais a esquerda da sub-árvore da direita orrige a altura 62 TD Árvore VL Remoção Procura pelo nó mais a esquerda 31

Árvore VL: Remoção 63 Remove valor: 2 fb = +1 4 2 7 1 3 fb = +1 4 fb = +1 3 7 1 Árvore VL: Remoção 64 Remove valor: 7 fb = +1 4 3 7 1 1 fb = +1 3 fb = +2 4 Nó desbalanceado plicar Rotação LL 3 1 4 32

Material omplementar 65 Vídeo ulas ula 79: Árvore VL: Definição ula 80: Árvore VL: Implementação ula 81: Árvore VL: Tipos de Rotação ula 82: Árvore VL: Implementando as Rotações ula 83: Árvore VL: Inserção ula 84: Árvore VL: Remoção 33