Árvores binárias de pesquisa

Documentos relacionados
Algoritmos e Estrutura de Dados. Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira

PAA-DCC-UFAM. Árvores. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

Estruturas de dados para listas arrays e listas ligadas

Estruturas de Dados. Árvores. Onde Estamos? Introdução à estrutura de dados. Alocação dinâmica de memória. Pilhas. Filas.

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Arvores binárias. Fonte: PF 14 pf/algoritmos/aulas/bint.html

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Estruturas de Dados II

Árvores. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Heaps binomiais. Gabriel Pedro de Castro. 20 de setembro de 2007

Árvore Binária de Busca

Árvores Binárias de Busca

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

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

O problema da busca (ou pesquisa) - Dado um conjunto de elementos, onde cada um é identificado por uma chave, o objetivo da busca é localizar, nesse

Árvores de pesquisa. Árvores de pesquisa equilibradas

ÁRVORE BINÁRIA DE BUSCA

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 08: Árvores

Aula T13 BCC202 Árvores. Túlio Toffolo

Exemplo Árvore Binária

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

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

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras

Aula 19 Árvores Rubro-Negras

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

Árvore binária - definição

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

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Universidade Federal de Mato Grosso Estrutura de Dados II

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

Árvores Vermelho-Preto

Árvores Vermelho-Preto

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

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Árvores Equilibradas. Sumário

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Aula 13 Árvores Rubro-Negras

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

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ÁRVORE BINÁRIA. Armanda Rodrigues 17 de Outubro 2011

AED2 - Aula 04 Vetores ordenados e árvores de busca

ÁRVORES E ÁRVORES BINÁRIAS. Adaptado de Alexandre P

Arquivos Seqüenciais: Intercalação

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

INF1010 Lista de Exercícios 2

Linguagem C: Árvores AVL

Algoritmos e Estruturas de Dados I

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

DAINF - Departamento de Informática

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

Prof. Jesus José de Oliveira Neto

O conjunto de registros pode ser: Um vetor de registros Uma lista encadeada Uma árvore Etc.

Algoritmos e Estruturas de Dados 2

Árvores Binárias de Busca

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

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

Árvores Binárias de Busca

Acesso Sequencial Indexado

Árvores Binárias de Busca

Árvores Binárias de Busca

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Mo:vação. Árvore AVL. Caracterís:cas. Origem. Exemplo. Exercício 1 Qual é a altura dos nodos 50 e 44?

Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F.

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

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

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

Árvores & Árvores Binárias

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

INE5408 Estruturas de Dados

Árvores binárias de busca

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

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

Aula 20: Árvores Binárias de Busca. Algoritmos de busca e inserção

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

Árvores de Suporte de Custo Mínimo

Árvores & Árvores Binárias

Algoritmos e Estruturas de Dados 2005/2006

Pesquisa em memória primária

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

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

Grupo 2 - Implementação de uma Classe Simples

Classificação Externa: Intercalação de Partições Classificadas

Pesquisa em Árvores Digitais. Adaptado de David M.

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

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

AED1 - Árvores. Hebert Coelho. Instituto de Informática Universidade Federal de Goiás. HC AED1-Árvores 1/49

Árvores binárias de busca

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE

Árvore Binária de Busca Ótima

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

Árvores & Árvores Binárias

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

GGI026 - Árvore rubro-negra

Caminhos mínimos de única origem

Transcrição:

Árvores binárias de pesquisa Fernando Lobo Algoritmos e Estrutura de Dados Algumas figuras retiradas do livro Introduction to Algorithms, 3rd Edition. 1 / 27 Árvores binárias de pesquisa Permite realizar operações sobre conjuntos dinâmicos em tempo O(h), sendo h a altura da árvore. Search, Insert, Delete, Minimum, Maximum, Successor, Predecessor. Se a árvore for equilibrada, h = O(lg n) No pior caso, h = O(n) 2 / 27

Representação Coleção de nós ligados de forma especial. Cada nó é um objecto que contém: key: elemento do conjunto dinâmico. left: apontador para o filho esquerdo. right: apontador para o filho direito. p: apontador para o pai. Se T é uma árvore, T.root aponta para a raíz. A raíz é o único nó da árvore que não tem pai: T.root.p = NIL 3 / 27 Propriedade Se y está na sub-árvore esquerda de x, então y.key x.key Se y está na sub-árvore direita de x, então y.key x.key 4 / 27

5 / 27 Percursos Podemos percorrer os nós da árvore de forma sistemática. 3 modos usuais: inorder: visita a sub-árvore esquerda, depois visita a raíz, e depois visita a sub-árvore direita. no exemplo anterior: 2 3 4 6 7 9 13 15 17 18 20 preorder: visita a raíz, depois visita a sub-árvore esquerda, e depois visita a sub-árvore direita. 15 6 3 2 4 7 13 9 18 17 20 postorder: visita a sub-árvore esquerda, depois visita a sub-árvore direita, e depois visita a raíz. 2 4 3 9 13 7 6 17 20 18 15 6 / 27

Inorder Inorder visita os elementos por ordem crescente. 7 / 27 Search Dado um apontador para um nó x e um valor k, retorna um apontador para um nó da árvore que tenha key = k, ou NIL caso não exista nenhum key = k. Chamada inicial: Tree-Search(T.root, k) 8 / 27

Versão iterativa 9 / 27 Minimum Está no nó mais à esquerda da árvore. 10 / 27

Maximum Está no nó mais à direita da árvore. 11 / 27 Sucessor e Predecessor Assumindo que os keys são distintos: O sucessor de um nó x é o nó y tal que y.key é a key mais pequena que seja maior que x.key. O predecessor é definido de forma análoga. Se x é sucessor de y, então y é predecessor de x. Podemos obter o sucessor e predecessor de um nó sem fazer qualquer comparação, i.e. usando apenas a estrutura da árvore. 12 / 27

Sucessor Como encontrar o sucessor de x? Há 2 casos: 1 x tem uma sub-árvore direita que não é vazia. O sucessor de x é o mínimo dessa sub-árvore. 2 A sub-árvore direita de x é vazia. Vamos subindo pela árvore a partir de x. Enquanto subirmos pela esquerda (filho direito), as keys são menores que x. O sucessor de x está no primeiro nó que não subiu pela esquerda. 13 / 27 Exemplos Sucessor do nó que tem key = 15 é o nó que tem key = 17. Sucessor do nó que tem key = 13 é o nó que tem key = 15. Sucessor do nó que tem key = 20 é NIL. 14 / 27

Tree-Predecessor(x) faz-se de forma análoga. 15 / 27 Inserir um elemento Para inserir um elemento v na árvore, o procedimento recebe um nó z com o atributo key já inicializado com o valor v. Começa na raíz e vai andando pela esq ou dta consoante z.key seja < ou que o nó corrente. Mantém 2 apontadores: um para x (nó corrente), outro para y (pai do nó corrente). z vai acabar por ser uma nova folha da árvore. 16 / 27

Exemplo de inserção de key = 13 17 / 27 18 / 27

Apagar um nó z da árvore Há 4 casos: caso a) : z não tem filho esquerdo. (Filho dto pode ser NIL...) substitui z pelo seu filho direito. 19 / 27 Apagar um nó z da árvore caso b) : z só tem um filho e esse filho é o esquerdo. z é substituído pelo filho esquerdo. 20 / 27

Apagar um nó z da árvore caso c) : z tem 2 filhos e o filho dto é o sucessor de z. Substitui-se z por y (o sucessor de z). filho dto de y fica na mesma. filho esq e y passa a ser z.left 21 / 27 Apagar um nó z da árvore caso d) : z tem 2 filhos e o filho dto não é o sucessor de z. Acha-se o sucessor de z. Seja ele y. (y terá de estar na sub-árvore dta de z e não pode ter filho esq.) substitui y pelo seu filho direito (x na figura) depois substitui z por y. 22 / 27

23 / 27 Sobre o código Tree-Delete Faz uso da função Transplant(T, u, v) ver próximo slide linhas 1 2: caso a) linhas 3 4: caso b) linha 5: encontra o sucessor de z linha 6: distingue caso c) e d) linhas 10 12: caso c) linhas 7 12: caso d) 24 / 27

Transplant(T, u, v) Substitui a sub-árvore que tem u como raíz pela sub-árvore que tem v como raíz. pai de u passa a ser o pai de v o pai de u (agora de v) tem v como filho dto ou esq, dependendo de u ter sido filho esq ou dto. 25 / 27 26 / 27

Sobre o código Transplant linhas 1 2: é o caso de u ser raíz de T. (Caso contrário, u é filho esq ou dto de seu pai.) linhas 3 4: actualiza o pai de u se for filho esquerdo. linha 5: actualiza o pai de u se for filho direito. linhas 6 7: actualiza o pai de v caso v nil 27 / 27