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

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

Linguagem C: Árvores AVL

ÁRVORE AVL. Problema do balanceamento

INE5408 Estruturas de Dados

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

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

Universidade Federal de Mato Grosso Estrutura de Dados II

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

Árvores Binárias Balanceadas Estrutura de Dados I

Árvores Binárias de Busca

Árvores binárias de busca

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

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

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

Á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

Árvores Binárias de Busca

Árvores AVL. Prof. Robinson Alves

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

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

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

Árvores binárias de busca

{ = == NULL) = == NULL)

Árvores Equilibradas. Sumário

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

Árvores AVL e Árvores B. Jeane Melo

Árvores Vermelho-Preto

Árvores Vermelho-Preto

Árvores Binárias Balanceadas

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

Á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

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

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

Aula 10 Árvores Adelson-Velskii e Landis

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

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

Dicionários. TAD Orientado a conteúdo

Aula 13 Árvores Adelson-Velskii e Landis

Árvores AVL (Adelson-Velskii and Landis)

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

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

Árvores de pesquisa. Árvores de pesquisa equilibradas

Árvores balanceadas. Aleardo Manacero Jr.

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

PROGRAMAÇÃO III (LTSI)

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

Árvores de Pesquisa (Parte II)

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

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

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Problemas com ABP Desbalanceamento progressivo

Árvores de Pesquisa (Parte II)

Métodos de Pesquisa de Dados

Árvores Rubro-Negra IFRN

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

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

Pesquisa em memória primária

GGI026 - Árvore balanceada

EAD Árvore - representação usando listas ligadas

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

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

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Aula 16: Pesquisa em Memória Primária - Árvores AVL. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

ÁRVORES BALANCEADAS (AVL)

GGI026 - Árvore rubro-negra

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

Árvores de Pesquisa (Parte II)

void ins_ele (ARV_BIN_BUSCA *arv, int v) { if (!(*arv)) maketree(arv, v); else if (v<info(*arv)) /* if (v<(*arv)->info) */ ins_ele(&((*arv)->left),

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

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

Árvores AVL IAED, 2014/2015

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

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

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

Aula 19 Árvores Rubro-Negras

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

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

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

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

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

Aula 13 Árvores Rubro-Negras

Algoritmos e Estruturas de Dados 2005/2006

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Linguagem Haskell. Maria Adriana Vidigal de Lima

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. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa

Árvores binárias de busca

Árvores Binárias de Busca

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

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 1 8: Figura 1 9: Figura 1 10:

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Algoritmos e Estruturas de Dados 2007/2008. Ajusta a estrutura da árvore à frequência de acesso aos dados

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

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

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

ÁRVORES. Árvores. Árvores. Prof. Yandre Maldonado e Gomes da Costa

Árvores Binárias de Busca

Transcrição:

Árvores

Árvores AVL Os algoritmos vistos trabalham sobre a árvore toda. Se houver a necessidade de manter o balanceamento a cada inserção ou remoção, então sua eficiência fica bastante prejudicada. 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. Uma alternativa para esse problema é fazer uso e algoritmos que trabalhem apenas em parte da árvore, a cada inserção ou remoção. Um método clássico para o balanceamento local de árvores foi proposto por Adelson- Velskii e Landis e é usado na árvore que recebe a nomenclatura : AVL. Uma árvore AVL, também conhecida como árvore admissível é uma árvore na qual as alturas das subárvores esquerda e direita de cada nó diferem no máximo por um.

Árvores AVL Os números nos nós indicam os fatores de balanceamento que são as diferenças entre as alturas das subárvores esquerda e direita. Numa árvore AVL todos os fatores de balanceamento devem ser +1, ou -1. A definição de árvore AVL é semelhante à da árvore balanceada, mas as técnicas de balanceamento estão ímplícitas na definição. Se o fator de balanceamento de qualquer nó em uma árvore AVL se torna menor do que 1 ou maior do que 1, a árvore tem que ser balanceada. -1 +1 +1-1 -1-1 +1

Árvores AVL Exemplos 42 +1 15 88-1 6 27 63-1 94 42 15 88 6 27 63 94 42 +2 15-1 27 63 88-2 2 57 71 2 57 71 Árvore AVL Não é árvore AVL!

Condição de balanceamento AVL Uma árvore vazia é balanceada AVL. Uma árvore não vazia T={r,TL,TR} é balanceada AVL se tanto TL quanto TR forem balanceadas AVL e hl hr 1 onde hl é a altura da árvore TL e hr é a altura da árvore TR.

Balanceamento de Árvores AVL Inserções e remoções podem destruir o equilíbrio de uma árvore. Após a operação ser efetuada é necessário verificar se houve quebra da propriedade de balanceamento da árvore. A verificação do balanceamento da árvore é feita através do controle das alturas das sub-árvores esquerda e direita da raiz da árvore. Se o módulo da diferença das alturas(altura da sub-árvore direita altura da sub-árvore esquerda) for maior que 1, houve a quebra do balanceamento, e há a necessidade de re-estruturar a árvore para que ela volte a ser balanceada.

Balanceamento de Árvores AVL Uma árvore AVL sempre irá procurar manter-se uma árvore binária quase completa, ou seja, uma árvore tal que o número de passos(operações) necessários para se realizar qualquer algoritmo sobre a árvore seja no máximo log n. Dada uma raiz r com subárvores L (left) e R (right), e supondo que a inserção deve ser feita na sub-árvore da esquerda. Pode-se distinguir 3 casos: Se hl = hr, então L e R ficam com alturas diferentes mas continuam balanceadas. Se hl < hr, então L e R ficam com alturas iguais e balanceamento foi melhorado. Se hl > hr, então L fica ainda maior e balanceamento foi violado.

Balanceamento de Árvores AVL Nós 9 ou 11 podem ser inseridos sem balanceamento. A subárvore com raiz 1 passa a ter duas subárvores e a árvore com raiz 8 vai ficar melhor balanceada! Inserção dos nós 3, 5 ou 7 requerem que a árvore seja rebalanceada! 2 8 4 1 6 8 4 1 2 6 9 11 2 8 4 1 6 3 5 7

Balanceamento de Árvores AVL A operação básica para balanceamento de uma árvore AVL é a rotação. Para o balanceamento da árvore pode-se realizar: rotações simples ou rotações duplas. Uma rotação simples ocorre quando um nó está desbalanceado e seu filho estiver no mesmo sentido da inclinação. Uma rotação-dupla ocorre quando um nó estiver desbalanceado e seu filho estiver inclinado no sentido inverso ao pai.

Balanceamento de Árvores AVL Tipos de rotação 1º Caso: Rotação simples à esquerda - O nó intermediário(3) é maior que seu pai(1), porém, é menor que seu filho(5). - Logo o nó intermediário(3) deve ser escolhido para ser a raiz da árvore resultante. - O nó corrente(1) tem que cair para a esquerda, ou seja, ser rotacionado para esquerda.

Balanceamento de Árvores AVL Tipos de rotação 2º Caso: Rotação simples à direita O nó intermediário(3) é maior que seu pai(1), porém, é menor que seu filho(5). Logo o nó intermediário(3) deve ser escolhido para ser a raiz da árvore resultante. O nó corrente(1) tem que cair para a direita, ou seja, ser rotacionado para direita.

Balanceamento de Árvores AVL Tipos de rotação 3º Caso: Rotação dupla à esquerda O nó intermediário(5) é maior que seu pai(1)e é maior que seu filho(3). Logo o nó intermediário(5) deve ser trocado com o seu filho(3), por uma rotação à direita, caindo no 2º caso; Então aplica-se uma rotação à esquerda.

Balanceamento de Árvores AVL Tipos de rotação 4º Caso: Rotação dupla à direita O nó intermediário(1) é menor que seu pai(5) e menor que seu filho(3). Logo o nó intermediário(1) deve ser trocado com o seu filho(3), por uma rotação à esquerda, caindo no 2º caso; Então aplica-se uma rotação à direita.

Balanceamento de Árvores AVL Uma árvore AVL pode se tornar desbalanceada em 4 situações, mas somente duas são analisadas pois há simetria entre os casos. Inserção de um nó na árvore esquerda do filho esquerdo Inserção de um nó na árvore direita do filho esquerdo Inserção de um nó na árvore esquerda do filho direito Inserção de um nó na árvore direita do filho direito Casos 1 e 4 simétricos; casos 2 e 3 simétricos Casos 1 e 4 são resolvidos com uma rotação simples. Casos 2 e 3 são resolvidos com uma rotação dupla.

Balanceamento de Árvores AVL Balanceamento tipo 1: o nó raiz de uma subárvore tem fator de balanceamento 2 ( -2) e tem um filho com fator de balanceamento 1 (-1) o qual tem o mesmo sinal que o fator de balanceamento do nó pai. Solução: rotação simples sobre o nó de fator de balanceamento 2 (-2). Rotações são feitas à esquerda quando o fator de balanceamento for positivo e à direita quando o fator de balanceamento for negativo. 8 4 1 1 2 1-1 8-1 -2 4 1 9 15-1 1 2 6 12 3

Balanceamento de Árvores AVL 8 2 1 4 1 1 8 15-1 9 15-1 4 9 12 12 8-2 4-1 4 1 1 2 8 1 2 6 3 3 6 1

Balanceamento de Árvores AVL Algoritmo para rotação à direita sobre o nó p rotacao_direita ( p ); { } q = esq(p); temp = dir(q); dir(q) = p; esq(p) = temp; Algoritmo para rotação à esquerda sobre o nó p rotação_esquerda(p) { } q = dir(p); temp = esq(q); esq(q) = p; dir(p) = temp;

Balanceamento de Árvores AVL Balanceamento tipo 2: o nó raiz de uma subárvore tem fator de balanceamento 2 (ou -2) e tem um filho com fator de balanceamento -1 (ou 1) o qual tem o sinal oposto ao fator de balanceamento do nó pai. Solução: rotação dupla. primeiro roda-se o nó com fator de balanceamento 1 (-1) na direção apropriada. depois roda-se o nó que tinha fator de balanceamento -2 (2) na direção oposta.

Balanceamento de Árvores AVL 8-2 8 1 4 1 2 6-1 4 6 1 4 6 8 1 5 2 5 2 5 1 Rotação à esquerda Rotação à direita

Árvores AVL Remoção A remoção em árvores AVL é similar à remoção em uma árvore binária de busca. Todavia, é preciso verificar o balanceamento e, se necessário, aplicar algumas das rotações. A retirada de um valor de uma Árvore AVL é mais complexa do que a inserção. Enquanto qualquer inserção sempre ocorre numa folha da árvore, uma retirada envolve pelo menos dois casos distintos: os nós com dois filhos e os demais nós. Em geral é usada a remoção por cópia pois a remoção por fusão pode criar um grande desbalanceamento na árvore. A remoção de um nó não precisa necessariamente de uma rotação imediata pois ela pode melhorar o FB de seu ascendente, mas ela pode piorar o FB do avô.

Árvores AVL Para a remoção pode-se cair em um dos casos: Rotação simples à esquerda: A remoção do nó 1 deixa a árvore com desbalanceamento do tipo 1. Aplica-se o algoritmo de rotação simples à esquerda sobre a raiz onde ocorreu a quebra do balanceamento.

Árvores AVL Rotação simples à direita: A remoção do nó 15 deixa a árvore com desbalanceamento do tipo 2. Aplica-se o algoritmo de rotação simples à direita sobre a raiz onde ocorreu a quebra do balanceamento.

Árvores AVL Rotação dupla à esquerda: A remoção do nó 1 deixa a árvore com desbalanceamento do tipo 3. Aplica-se o algoritmo de rotação dupla à esquerda sobre a raiz onde ocorreu a quebra do balanceamento.

Árvores AVL Rotação dupla à direita: A remoção do nó 15 deixa a árvore com desbalanceamento do tipo 4. Aplica-se o algoritmo de rotação dupla à direita sobre a raiz onde ocorreu a quebra do balanceamento.

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento Sem necessidade de rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento Sem necessidade de rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento Sem necessidade de rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento

Árvores AVL Antes da remoção Após a remoção Após o rebalanceamento