PROGRAMAÇÃO III (LTSI)

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

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

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

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

Dicionários. TAD Orientado a conteúdo

Árvores binárias de busca

Árvores balanceadas. Aleardo Manacero Jr.

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

INE5408 Estruturas de Dados

Aula 13 Árvores Adelson-Velskii e Landis

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019

Aula 10 Árvores Adelson-Velskii e Landis

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

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

Árvores binárias de busca

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

Árvores AVL e Árvores B. Jeane Melo

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

ÁRVORE AVL. Problema do balanceamento

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

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

Á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. Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores AVL. Prof. Robinson Alves

Universidade Federal de Mato Grosso Estrutura de Dados II

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

Linguagem C: Árvores AVL

EAD Árvore - representação usando listas ligadas

Árvores Binárias de Busca

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

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

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

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 Binárias Balanceadas Estrutura de Dados I

Árvores Vermelho-Preto

Árvores Vermelho-Preto

Árvores AVL (Adelson-Velskii and Landis)

Métodos de Pesquisa de Dados

Linguagem Haskell. Maria Adriana Vidigal de Lima

Á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 Equilibradas. Sumário

Árvores Rubro-Negra IFRN

Á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

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

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

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019

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

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

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

Árvores Binárias de Busca

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

Problemas com ABP Desbalanceamento progressivo

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

Estruturas de dados. -Lista ligada -Pilha -Fila -Árvore -Hashtable

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

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Árvores Binárias de Busca

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

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

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

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

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

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

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

Estrutura de Dados: Aula 3 - Linguagem C

Algoritmos e Estruturas de Dados. Décima primeira aula: Árvores chanfradas

Árvores Binárias Balanceadas

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias

ÁRVORES BALANCEADAS (AVL)

Árvores de Pesquisa (Parte II)

Busca em vetores. Para encontrar um elemento em um vetor desordenado é caro Porém, inserir ou remover é barato.

Árvores binárias de busca

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

Árvores AVL IAED, 2014/2015

ÁRVORES. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

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

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

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

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019

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

Árvores de Pesquisa (Parte II)

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

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

{ = == NULL) = == NULL)

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

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

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

Árvores binárias de busca

Árvores de pesquisa. Árvores de pesquisa equilibradas

DAINF - Departamento de Informática

Prof. Jesus José de Oliveira Neto

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

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

Filas de Prioridade & Heaps

Funções Finitas II: árvores AVL

Transcrição:

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2009/2010

Árvores Binárias AVL Tal como visto anteriormente, caso a inserção / remoção de elementos numa árvore binária não seja efectuada pela ordem conveniente, podem-se perder todas as vantagens associadas ao uso de estruturas não sequênciais: Exemplo: L 1 2 3 4

Árvores Binárias AVL Inserção na árvore dos elementos 1 2 3 4 A Inserção dos elementos 2 3 1 4 1 2 3 A 4 2 1 3 4

Árvores Binárias AVL Tal como visto anteriormente, caso a inserção / remoção de elementos numa árvore binária não seja efectuada pela ordem conveniente, podem-se perder todas as vantagens associadas ao uso de estruturas não sequênciais. As árvores binárias AVL definem uma forma de manuseamento de árvores binárias, tendo como objectivo mantê-las balanceadas. Alterações na inserção / remoção O nome AVL provém dos seus inventores: GM G.M. Adelson-Velskii e E.M. Landis, que publicaram o artigo: "An algorithm for the organization of information."

Árvores Binárias AVL Para cada nó é definido um factor de balanceamento, que é dado pela diferença entre o número de níveis dos ramos esquerdo e direito. Obtêm-se resultados semelhantes se forem simplesmente contados os nós do ramo esquerdo e direito. Caso a diferença seja 0, 1 ou -1 para todos os nós, considera-se que a árvore esstá balanceada. Se for diferente destes valores, é necessário recorrer a operações de balanceamento.

Árvores Binárias AVL: Exercício Implemente uma função que devolve o número de níveis de uma árvore binária. Protótipo: int niveis(nodoab *A);

Árvores Binárias AVL As operações de balanceamento consistem em operações de rotação (direita ou esquerda). Uma operação de rotação consiste em alterar a p ç ç estrutura da árvore sem alterar a ordem dos elementos.

Árvores Binárias AVL Pseudo-código para uma rotação à direita: Temp= Raiz.fe Raiz.fe = Temp.fd Temp.fd = Raiz Raiz = Temp Raiz 6 Temp 3 8 1 4 A rotaçao à esquerda é semelhante, trocando fd com fe no algoritmo acima descrito

Árvores Binárias AVL: Inserção Após cada inserção, é necessário verificar o estdo de balanceamento da árvore. Se todos os nós tiverem factores de balanceamento 0, 1 ou -1, a árvore considera-se balanceada. Caso algum nodo tenha factor de balanceamento diferente, será necessário aplicar operações de rotação. As rotações aplicar-se-ão às sub-árvores mínimas que não estão balanceadas (de baixo para cima).

Árvores Binárias AVL: Inserção Existem 4 casos possíveis: Esquerda e Direita-Esquerda Se o factor de balanceamento da raiz (R) é -2, a sub-árvore direita é mais profunda que a subárvore esquerda. Neste caso vai-se calcular o factor de balanceamento do seu filho direito. Se for -1, aplica-se uma rotação esquerda. Se for 1, é necessária uma operação de rotação dupla: rotação à direita (considerando D raiz) seguida de rotação à esquerda (R raiz). Direita e Esquerda-Direita Se o factor de balanceamento da raiz (R) é 2, a sub-árvore esquerda é mais profunda que a subárvore direita. Neste caso vai-se calcular o factor de balanceamento do seu filho esquerdo. Se for 1, aplica-se uma rotação direita. Se for -1, é necessária uma operação de rotação dupla: rotação à esquerda (L raiz) seguida de rotação à direita (R raiz).

Árvores Binárias AVL: Remoção Ao remover nós, é também necessário validar o estado da árvore. Se o nó é uma folha, removê-lo. Se não for, substituí-lo pelo maior elemento da sua sub-árvore esquerda (ou menor da sua sub-árvore direita) e remove-se aquele nodo. O nodo substituto terá no máximo ái uma subárvore. Após a remoção, verifica-se o estado de balanceamento desde o nó substituto até à raiz. Neste processo aplicam-se rotações sempre que necessário (similarmente ao processo de inserção).

Árvores Binárias AVL: Exercício NodoAB * insertavl(nodoab *A, NodoAB *nv); //Insere nv na árvore A. Deve ser garantido o balanceamento da árvore. NodoAB* removeavl(nodoab *A, NodoAB *del); //Remove o nodo del da árvore A e garante o balanceamento da árvore.