DAINF - Departamento de Informática

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

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

ÁRVORE BINÁRIA DE BUSCA

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

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

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

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

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

Árvores binárias de busca

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

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

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores Binárias de Busca

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

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

Árvores binárias de busca

Estruturas de Dados I

Árvores & Árvores Binárias

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

Programação de Computadores II. Cap. 17 Busca

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

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Árvores Binárias de Busca

Busca. Pesquisa sequencial

Árvores Binárias Balanceadas Estrutura de Dados I

Métodos Computacionais. Árvores

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

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

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1

/* percorreu todo o vetor e não encontrou elemento */ return -1;

Árvores Binárias de Busca

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

Estruturas de Dados II

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

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

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

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

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

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

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

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

INF 1007 Programação II

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

Aula 08. Estruturas de dados Árvore e Grafo

Linguagem C: Árvores Binarias

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

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

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

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

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Árvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

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

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

Algoritmos 2 - Introdução

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

Árvores AVL e Árvores B. Jeane Melo

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

Árvores. Prof. César Melo DCC/ICE/UFAM

INF 1620 P4-27/06/02 Questão 1 Nome:

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres

Árvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD

Árvores Binárias de Busca

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

INF1010 Lista de Exercícios 2

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

Transcrição:

DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof. Rodrigo Minetto ( http://www.dainf.ct.utfpr.edu.br/ rminetto/ )

Árvores binárias de busca Motivação: o algoritmo de busca binária, visto nesse curso, tem bom desempenho computacional e deve ser usado quando temos os dados ordenados armazenados em um vetor.

Árvores binárias de busca Contudo, se precisarmos inserir ou remover elementos e ao mesmo tempo dar suporte a funções de busca eficientes, a estrutura de vetor (e, consequentemente, o uso do algoritmo de busca binária) não se mostra adequada.

Árvores binárias de busca Para inserir um novo elemento em um vetor ordenado temos que que rearrumar os elementos no vetor para abrir espaço para a inserção do novo elemento. Uma situação análoga ocorre quando removemos um elemento do vetor.

Árvores binárias de busca Precisamos de uma estrutura dinâmica que dê suporte a operações eficientes de inserção, remoção e busca! Solução: árvores binária de busca!

Árvores binárias de busca Árvores binárias de busca têm uma propriedade fundamental: o valor associado à raiz é sempre maior do que o valor associado a qualquer nó da subárvore à esquerda e é sempre menor do que o valor associado a qualquer nó da subárvore à direita.

Exemplos de árvores binárias de busca 50 e 30 90 c m 20 40 95 a d r 10 35 45 z

Árvores binárias de busca Essa propriedade garante que, quando a árvore é percorrida em ordem simétrica, ou seja in-ordem (E-R-D), os valores são encontrados em ordem crescente.

Árvores binárias de busca In-ordem: 10,20,30,35,40,45,50,90,95. In-ordem: a,c,d,e,m,r,z. 50 e 30 90 c m 20 40 95 a d r 10 35 45 z

Árvores binárias de busca Ao usar essa propriedade de ordem, a busca de um valor em uma árvore pode ser feita de forma eficiente. Para procurar um valor numa árvore, comparamos o valor que buscamos ao valor associado à raiz.

Árvores binárias de busca Em caso de igualdade, o valor foi encontrado; se o valor dado for menor que o valor associado à raiz, a busca continua na subárvore esquerda; se o valor for maior a busca continua na subárvore direita.

Árvores binárias de busca Por essa razão, essas árvores são frequentemente chamadas de árvores binárias de pesquisa.

Árvores binárias de busca - Estrutura Tal como anteriormente, uma estrutura em C para representar um nó da árvore binária de busca pode ser dada por: typedef struct arvore { int info; struct arvore *esq; struct arvore *dir; } Arvore; info *esq *dir info info

Árvores binárias de busca - Operações A operação para buscar um elemento explora a propriedade de ordenação da árvore: int buscar (Arvore *a, int v) { if (a == NULL) { return 0; } /*N~ao achou*/ else if (v < a->info) { return buscar (a->esq, v); } else if (v > a->info) { return buscar (a->dir, v); } else { return 1; } /*Achou*/ }

Árvores binárias de busca - Operações A operação de inserção deve adicionar um elemento na árvore na posição correta para que a propriedade fundamental da árvore binária de busca seja mantida. Ou seja, comparamos o valor que se deseja inserir com a raiz da árvore e o inserimos na subárvore esquerda ou direita (posição correta localizada recursivamente), conforme o resultado da comparação.

Árvores binárias de busca - Operações A função a seguir implementa a inserção: Arvore* inserir (Arvore *a, int v) { if (a == NULL) { a = (Arvore*)malloc(sizeof(Arvore)); a->info = v; a->esq = a->dir = NULL; } else if (v < a->info) { a->esq = inserir (a->esq, v); } else { a->dir = inserir (a->dir, v); } return a; }

Exercícios Exercício 1) Desenhe as árvores binárias de busca para os seguintes números inseridos nessa ordem: 1, 2, 3, 4, 5, 6, 7. 7, 6, 5, 4, 3, 2, 1. 4, 6, 2, 5, 1, 7, 3 Qual das três é melhor para buscar um dado elemento.

Exercícios Exercício 2) Escreva um programa que produza 30 números aleatórios entre 0 e 999. Insira esses números em uma árvore binária de busca e imprima os valores na árvore (utilizando um percurso in-order). Os valores estão ordenados?

Exercícios Exercício 3) Escreva um programa que produza 100000 números aleatórios entre 0 e 99999. Insira esses números em uma árvore binária de busca. Procure por um valor que não existe por exemplo 100000. Quanto tempo a busca levou?

Exercícios Exercício 4) Escreva um programa que produza 100000 em ordem (0 até 99999). Insira esses números em uma árvore binária de busca. Procure por um valor que não existe por exemplo 100000. Quanto tempo a busca levou?

Exercícios Exercício 5) Escreva uma função min que encontre uma chave mínima em uma árvore de busca. Escreva uma função max que encontre uma chave máxima.