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

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

ÁRVORE BINÁRIA DE BUSCA

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

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

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Aula 08. Estruturas de dados Árvore e Grafo

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

Á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

Árvores & Árvores Binárias

Prof. Jesus José de Oliveira Neto

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

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

Estruturas de Dados II

Universidade Federal de Mato Grosso

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

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

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

Árvores & Árvores Binárias

Árvores. Árvores Binárias. Conceitos gerais Terminologia Forma de Representação de Árvores. Conceitos gerais Operações

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

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

Árvores. Listas e árvores. Árvores. Árvores. Árvores. Árvores 03/11/2011. Listas lineares

Estrutura de Dados Árvores Prof. Tiago Eugenio de Melo, MSc material de referência

ESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção

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

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

DAINF - Departamento de Informática

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

Árvores - Conceitos. Roseli Ap. Francelin Romero

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

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

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

Árvores & Árvores Binárias

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

Árvores Conceitos gerais

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

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

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

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Árvores. Sérgio Carlos Portari Júnior

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

INE5408 Estruturas de Dados

Pesquisa em memória primária

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

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

Árvore binária - definição

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

UFJF - DCC - Estrutura de Dados e Laboratório de Programação II

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

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

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

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

Universidade Federal de Mato Grosso Estrutura de Dados II

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

Métodos Computacionais. Árvores

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

(a) todos os nós irmãos da árvore m-ária são interligados; (b) todas as conexões pai-filho são removidas, exceto a primeira de cada grupo.

Árvores binárias de busca

Algoritmos e Estruturas de Dados I

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

Árvores AVL e Árvores B. Jeane Melo

Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

AED2 - Aula 04 Vetores ordenados e árvores de busca

Matemática Discreta 10

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

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

INF1010 Lista de Exercícios 2

Acesso Sequencial Indexado

ADT - Árvores. ADT Árvores Definição

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

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

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

ÍNDICE. Árvores (Definição e terminologias) 2. Árvores Binárias 4. Armazenamento de Árvores Binárias 5. Aplicação 6. Como percorrê-la 6.

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

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

Árvores Binárias de Busca

CES-11. Árvores. Conceito de árvore. Definição recursiva de árvore Definições associadas a árvore. Ordenação dos nós de uma árvore

CONCEITO DE ÁRVORE CES-11. A raiz é o único nó que não possui ancestrais. As folhas são os nós sem filhos. Exemplos:

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

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

UNIDADE III Estruturas de Dados Moderna Introdução à Árvores. Fonte: Cláudio Esperança e Eduardo Piveta

Raiz, filho, pai, irmão, ancestral, descendente, folha.

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Árvores binárias de busca

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

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

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

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

MCTA001 Algoritmos e Estruturas de Dados I. Aula 08 Árvores (parte 1) Laboratório

Busca em Profundidade. Componentes Conexos. Grafos. Maria Adriana Vidigal de Lima. Fevereiro

MC3305 Algoritmos e Estruturas de Dados II. Aula 06 Árvores. Prof. Jesús P. Mena-Chalco.

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

INF 1620 P2-23/10/04 Questão 1 Nome:

CES-11. Algoritmos e Estruturas de Dados

Transcrição:

ÁRVORES

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

ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização Modelagem de algoritmos * O conceito de árvores está diretamente ligado à recursão * 3

ÁRVORES um conjunto finito de elementos onde um elemento é chamado de raiz os outros são divididos em subconjuntos disjuntos, onde cada um define uma árvore cada elemento é um nó ou vértice da árvore arcos ou arestas conectam os vértices 4

ÁRVORES uma coleção não vazia de vértices e ramos que satisfazem a certos requisitos vértice (ou nó): é um objeto simples que pode ter um nome e mais alguma outra informação associada arco ou aresta (direcionado ou não): é uma conexão entre dois nós 5

REPRESENTAÇÃO Á r v o r e A B C C E F G H I J K L M N O P Q R S 6

EXEMPLO 7

TERMINOLOGIA E PROPRIEDADES Cada vértice (exceto a raiz) tem exatamente um antecessor imediato ou pai Cada vértice tem nós sucessores imediatos ou filhos, a não ser: nós sem filhos : terminais ou folhas Filhos de um mesmo pai - irmãos Nós com pelo menos um filho : nãoterminais ou internos 8

TERMINOLOGIA E PROPRIEDADES caminho em uma árvore: é uma lista de vértices distintos e sucessivos, conectados por arcos (arestas) da árvore nó raiz existe exatamente um caminho entre a raiz e cada um dos nós da árvore se existir mais de um caminho ou nenhum grafo 9

TERMINOLOGIA E PROPRIEDADES grau é o número de subárvores de um nó no exemplo: grau de A é 3; de N é 4; de J é 1 qualquer nó é a raiz de uma sub-árvore consistindo dele e dos nós abaixo 10

ÁRVORES Á r v o r e ( 1 ) Á r v o r e ( 2 ) A A B C D C D B E F G G E F 11

ÁRVORES A única diferença entre as duas árvores é a ordem das sub-árvores Uma árvore ordenada é definida como uma árvore onde as sub-árvore formam um conjunto ordenado Em uma árvore ordenada define-se o primeiro, segundo e último irmão, de acordo com alguma propriedade 12

TERMINOLOGIA os vértices da árvore estão classificados em níveis é o número de nós no caminho entre o vértice e a raiz nível da raiz é zero A nível de C é 1 B C D nível de K é 3 E F G H I L J K M N nível de um nó = nível de seu pai + 1 nível de P é 5 O P Q R S 13

TERMINOLOGIA Altura de uma árvore corresponde ao maior nível maior distância entre a raiz e qualquer nó Floresta um conjunto de árvores se removemos a raiz e os arcos que a ligam às sub-árvores, ficamos com uma floresta 14

15 ÁRVORES BINÁRIAS

DEFINIÇÃO Árvore Binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: T = 0 e a árvore é dita vazia ou Existe um nó r, chamado raiz de T, e os nós restantes podem ser divididos em dois subconjuntos disjuntos, Tre e Trd, que são as sub-árvores esquerda e direita de r, respectivamente e as quais, por sua vez, também são árvores binárias. 16

VANTAGENS Possuem um número constante de subárvores em cada nó Limitação do número de ponteiros usados Algoritmos eficientes para o tratamento A forma de armazenar os nós surge naturalmente de sua definição: Ponteiro para o nó raiz (como nas listas lineares) Ponteiros para os filhos: esq e dir Necessita de 2n+1 ponteiros para representar n nós. 17

VISUALIZAÇÃO DA ÁRVORE BINÁRIA USANDO PONTEIROS esq raiz A dir B C D E F G H I 18

OPERAÇÕES BÁSICAS DA ÁRVORE BINÁRIA (INTERFACE DO TIPO ÁRVORE) Criar uma árvore vazia Criar uma árvore não vazia Verificar se a árvore está vazia Verificar se um elemento pertence a árvore Liberar uma árvore Imprimir os nós da árvore 19

IMPLEMENTAÇÃO DE ÁRVORES BINÁRIAS O acesso a uma árvore se dará através de um ponteiro para o nó raiz A estrutura de um nó deve ser composta por: um campo que guarda a informação e dois ponteiros: um para a sub-árvore da esquerda e um para a sub-árvore da direita Funções são implementadas utilizando definição recursiva da estrutura 20

IMPLEMENTAÇÃO DE ÁRVORES BINÁRIAS Arv* arv_criavazia() { return NULL; } Arv* arv_cria(char c, Arv* sae, Arv* sad) { Arv* a = (Arv*) malloc (sizeof(arv)); // ou, em C++: // Arv* a = new Arv; a-> info = c; a-> esq=sae; a-> dir = sad; return a; } 21

IMPLEMENTAÇÃO DE ÁRVORES BINÁRIAS Função que verifica se elemento pertence a árvore 22

IMPLEMENTAÇÃO DE ÁRVORES BINÁRIAS Função que libera a estrutura da árvore Função que verifica se uma árvore está vazia 23

IMPLEMENTAÇÃO DE ÁRVORES BINÁRIAS Função que imprime elementos da árvore 24

EXEMPLO DE CRIAÇÃO DE UMA ÁRVORE 25

EXEMPLO DE USO DA IMPRESSÃO 26

INSERINDO UMA SUB-ÁRVORE NUMA ÁRVORE Dada a árvore Inserir a sub-árvore A esquerda do nó b 27

LIBERANDO UMA SUB-ÁRVORE NUMA ÁRVORE Dada a árvore Liberar a sub-árvore e 28

CRIAÇÃO E LIBERAÇÃO Note que a definição de árvore, por ser recursiva, não faz distinção entre árvores e sub-árvores. Assim, a função cria pode ser utilizada para acrescentar (enxertar) uma sub-árvore em um ramo de uma árvore, e libera pode ser usada para remover ( podar ) uma sub-árvore qualquer de uma árvore dada. 29

PERCURSOS EM ÁRVORES BINÁRIAS A busca nada mais é do que um percurso em uma árvore O percurso em uma árvore visitando cada nó uma única vez gera uma seqüência linear de nós Assim, passa a ter sentido falar em sucessor e predecessor de um nó segundo um determinado percurso Há três maneiras recursivas de se percorrer árvores binárias: Percurso em pré-ordem Percurso em pós-ordem Percurso em ordem 30

PERCURSO EM PRÉ-ORDEM Algoritmo básico: Se árvore vazia : fim visitar o nó raiz (imprimí-lo) percorrer em pré-ordem a sub-árvore esquerda percorrer em pré-ordem a sub-árvore direita ABDCEGFHI 31

PERCURSO EM EM ORDEM Algoritmo básico: Se árvore vazia : fim percorrer em ordem a sub-árvore esquerda visitar o nó raiz (imprimí-lo) percorrer em ordem a sub-árvore direita DBAEGCHFI 32

PERCURSO EM PÓS-ORDEM Algoritmo básico: Se árvore vazia : fim percorrer em ordem a sub-árvore esquerda percorrer em ordem a sub-árvore direita visitar o nó raiz (imprimí-lo) DBGEHIFCA 33

IMPLEMENTAÇÕES DAS OPERAÇÕES Diversas operações se utilizam desses algoritmos de percurso em árvore durante sua execução: Inserção, Remoção, nível, etc... Exemplo: Operação Esvaziar: esvaziar toda a árvore Operação Nível: Implementar uma função para retornar o nível de um elemento na árvore Observações: Supõe-se que todas as chaves sejam diferentes 34

ALTURA DE UMA ÁRVORE Propriedade Fundamental de Árvores Só existe um caminho da raiz para qualquer nó Definição de Altura de Árvore É o comprimento do caminho mais longo da raiz até uma das folhas. A altura de uma árvore com um único nó é 0; A altura da árvore vazia é 1; A raiz está no nível 0 e seus filhos diretos no nível 1, e assim por diante; O último nível é o h (que é a altura da árvore) 35

ÁRVORE CHEIA Árvore é dita cheia se todos os seus nós internos têm 2 sub-árvores associadas e todos os nós folhas estão no último nível. O número total de nós de uma árvore cheia é dado por 2 h+1-1 Uma árvore binária cheia com n nós tem uma altura proporcional a log n 36

ÁRVORE CHEIA 37

ÁRVORE DEGENERADA Árvore é dita degenerada se todos os seus nós internos têm uma única sub-árvore associada. A estrutura hierárquica se degenera em uma estrutura linear Uma árvore degenerada de altura h tem h + 1 nós Altura de uma árvore degenerada com n nós é proporcional a n 38

ÁRVORE DEGENERADA 39

POR QUÊ CALCULAR A ALTURA? A altura de uma árvore é uma medida de avaliação da eficiência com que visitamos os nós de uma árvore Uma árvore binária com n nós tem uma altura mínima proporcional a log n (caso a árvore seja cheia) e uma altura máxima proporcional a n (caso a árvore seja degenerada) A altura indica o esforço computacional necessário para alcançar qualquer nó da árvore; Em árvores binárias de busca, é importante manter a altura pequena, ou seja, manter a árvore com distribuição dos nós próxima à da árvore cheia. 40

POR QUÊ CALCULAR A ALTURA? Exemplo de árvore binária de busca Valor da raiz sempre maior que o da sub-árvore da esquerda e menor que o da sub-árvore da direita Busca de elemento é otimizada 41

FUNÇÃO PARA CÁLCULO DA ALTURA Função auxiliar para calcular o máximo entre dois inteiros Função recursiva para calcular a altura 42

ÁRVORE BINÁRIA DE BUSCA

ÁRVORES DE BUSCA BINÁRIA As árvores de busca binária têm uma propriedade fundamental: o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda (sae), e é sempre menor que o valor associado a qualquer nó da sub-árvore à direita (sad). Essa propriedade garante que, quando a árvore é percorrida em ordem infixada (sae - raiz - sad), os valores são encontrados em ordem crescente. 44

ÁRVORE DE BUSCA BINÁRIA 45

INTRODUÇÃO Para procurar um valor numa árvore, comparamos o valor que buscamos com o valor associado à raiz. Em caso de igualdade o valor foi encontrado; Se o valor procurado for menor que o valor da raiz a busca continua na sae; Se o valor procurado for maior que o valor da raiz a busca continua na sad. 46

TIPO DA ÁRVORE BINÁRIA 47

OPERAÇÃO DE BUSCA 48

OPERAÇÃO DE INSERÇÃO 49

OPERAÇÃO DE REMOÇÃO Essa operação é um pouco mais complexa que a de inserção. Existem três situações possíveis. A primeira é quando se deseja retirar um elemento que é folha da árvore. A segunda situação acontece quando o nó a ser retirado possui um único filho. A terceira situação ocorre quando o nó a ser retirado tem dois filhos. 50

OPERAÇÃO DE REMOÇÃO- 1ª E 2ª SITUAÇÕES 51

OPERAÇÃO DE REMOÇÃO- 1ª E 2ª SITUAÇÕES A primeira, e mais simples, é quando se deseja retirar um elemento que é folha da árvore. Neste caso, basta retirar o elemento da árvore e atualizar o pai, pois seu filho não existe mais. A segunda situação, ainda simples, acontece quando o nó a ser retirado possui um único filho. Para retirar esse elemento é necessário antes acertar o ponteiro do pai, pulando o nó: o único neto passa a ser filho direto. 52

OPERAÇÃO DE REMOÇÃO - 3ª SITUAÇÃO Localiza o nó a ser eliminado (nó 6) Encontra o nó mais a direita da sub-árvore da esquerda (nó 4) Trocar os valores entre o nó a ser eliminado e o nó encontrado. Localiza novamente o nó a ser eliminado (nó 6) 53

OPERAÇÃO DE REMOÇÃO - 3ª SITUAÇÃO Para poder retirar esse nó da árvore, devemos proceder da seguinte forma: encontramos o elemento que precede o elemento a ser retirado na ordenação. Isto equivale a encontrar o elemento mais à direita da sub-árvore à esquerda; trocamos a informação do nó a ser retirado com a informação do nó encontrado; retiramos novamente o nó encontrado (que agora contém a informação do nó que se deseja retirar). Observa-se que retirar tal nó agora é trivial, pois esse é um nó folha ou um nó com um único filho. 54

OPERAÇÃO DE REMOÇÃO 3ª SITUAÇÃO 55

OPERAÇÃO DE REMOÇÃO 3ª SITUAÇÃO 56

OPERAÇÃO DE REMOÇÃO 3ª SITUAÇÃO 57