CES-11. Algoritmos e Estruturas de Dados

Documentos relacionados
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:

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

Árvores & Árvores Binárias

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

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

INE5408 Estruturas de Dados

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

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

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Árvores. 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. Prof. César Melo DCC/ICE/UFAM

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

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

Unidade: Estruturas de Dados Não Lineares. Unidade I:

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 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

Árvores: Conceitos Básicos e Árvore Geradora

Algoritmos e Estruturas de Dados I

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

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

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

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

Grafos - Representação

Universidade Federal de Mato Grosso

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

INF1010 Lista de Exercícios 2

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015

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

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

Matemática Discreta 10

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, Percursos não recursivos, Arvores heterogêneas. Aula 19

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

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

Projeto e Análise de Algoritmos

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

Teoria dos Grafos Aula 6

ÁRVORE BINÁRIA DE BUSCA

Métodos de Ordenação Parte 3

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

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

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

Árvores. Sérgio Carlos Portari Júnior

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

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

ESTRUTURA DE DADOS (TCC )

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

Árvores Binárias e Busca. Jeane Melo

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

DAINF - Departamento de Informática

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),

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

26/08/2013. Árvore. Árvore. Árvore. Floresta :: Exemplo. Floresta ÁRVORES

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

Teoria dos Grafos Aula 5

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

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

INF111 Programação II Aulas 11, 12, 13 Ordenação

Busca em Largura. Adaptado de Humberto C. B. Oliveira

LISTA DE EXERCÍCIOS MÊS 04

Estruturas de Dados e Algoritmos (C/C++) Aula 05 (Prof. Fábio) pag. 1. Aula 05 - Conteúdo

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

Estruturas de Dados Pilhas, Filas, Listas

Algoritmos de ordenação Heapsort

Estruturas de Dados Filas

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

O que é uma árvore. Computadores Zen. Brasil. Internacional. Europa Asia Canada

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Linguagem Haskell. Maria Adriana Vidigal de Lima

Filas Exemplo de Aplicação

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

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

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

Ciclos hamiltonianos e o problema do caixeiro viajante

Estruturas de Dados Aula 15: Árvores 17/05/2011

(a) Indique, em português, o que realiza a seguinte função. [4 pontos]

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo

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

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

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Algoritmos e Estrutura de Dados III. Árvores

Árvores Binárias de Busca

Árvores de Pesquisa (Parte I)

Exemplo Árvore Binária

3. Conteúdo de um vértice v é conteúdo dos filhos de v.

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

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

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Das 5102 Fundamentos da Estrutura da Informação

Desenho e Análise de Algoritmos

EAD Árvore árvore binária

Análise Sintática (Cap. 04) Análise Sintática Descendente

Transcrição:

CES-11 Algoritmos e Estruturas de Dados CES-11 Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Conceito de árvore Tantos as pilhas como as filas são estruturas lineares, isto é, de uma única dimensão. Na sua implementação, as listas ligadas possibilitam maior flexibilidade que os vetores, mas mesmo assim não permitem a representação hierárquica de dados. (trees) são estruturas hierárquicas, formadas por vértices e arestas. Ao contrário das árvores naturais, são representadas de cima para baixo: a raiz está no topo e as folhas na base.

Conceito de árvore Cada elemento: Tem um único pai (exceto a raiz) Pode ter vários filhos Não pode ser pai de nenhum ancestral A raiz é o único nó que não possui ancestrais Nó A As folhas são os nós sem filhos Nós E, F, G, I, J, K Conceito de árvore Um nó não pode ter um ancestral como filho Caso contrário, surgiria um ciclo... Desse modo, a árvore é uma estrutura recursiva: cada filho é também raiz de uma outra árvore Conceito de árvore Exemplos: Árvore nula: sem nós Conceito de árvore O número de filhos por nó e as informações armazenadas diferenciam os tipos de árvores. A árvore ao lado representa a expressão (3+6)*(4-1)+5: as folhas possuem valores e os nós intermediários, operadores matemáticos.

CES-11 Definição recursiva de árvore Um único nó, por si mesmo, é também uma árvore sem filhos, onde ele é a raiz. Seja n um nó e T 1, T 2,..., T k, árvores de raízes n 1, n 2,..., n k, respectivamente. Pode-se construir uma nova árvore tornando n pai de n 1, n 2,..., n k. n n 1 n 2 n 3 n k T 1 T 2 T 3 T k Definição recursiva de árvore Comprovação de que a figura abaixo é uma árvore: I, J, K são árvores sem filhos H é raiz de uma nova árvore F e G são árvores sem filhos C é raiz de uma nova árvore E é uma árvore sem filhos B é raiz de uma nova árvore Como B, C e D são árvores, A é raiz de uma nova árvore CES-11

Filho esquerdo de um nó é o seu único filho ou o primeiro filho mais à esquerda. B é o filho esquerdo de A F é o filho esquerdo de C H é o filho esquerdo de D Irmão direito de um nó é o irmão imediatamente à direita desse nó. Nó sem irmão direito é chamado de caçula. C é o irmão direito de B K é o irmão direito de J H, G, K são caçulas E é filho esquerdo e caçula Caminho de um nó n 1 a outro n k : sequência de nós n 1, n 2, n 3,..., n k-1, n k tais que n i é pai de n i+1, com 1 i < k. Ex: A, AB, ABE, AC, B, ACG, CF, ADHJ, ADHK, DH, DHI, etc. O comprimento de um caminho é a sua quantidade de arestas. Ex: A = 0, AB = 1, DHI = 2 É o número de nós menos 1 Cada nó pode ser alcançado a partir da raiz através de um único caminho. O nível (ou profundidade) de um nó é o comprimento do caminho da raiz até esse nó. Altura de um nó é o comprimento do mais longo caminho desse nó a alguma folha. A altura de uma árvore não vazia é o nível máximo de um nó nessa árvore (ou seja, será a altura da sua raiz). Altura da árvore é 3 Altura 3 Altura 1 Altura 1 Altura 2 Altura 0 Altura 0 Altura 0 Nível 0 Nível 1 Altura 1 Nível 2 Altura 0 Altura 0 Altura 0 Nível 3

Se há um caminho de n i a n j, então n i é ancestral de n j e n j é descendente de n i. Um nó é ancestral e descendente de si mesmo. Ancestral próprio ou descendente próprio de um nó é um ancestral ou descendente, respectivamente, distinto desse mesmo nó. Na árvore ao lado: Ancestrais próprios de J: A, D, H Descendentes próprios de D: H, I, J, K Podemos redefinir raiz e folha com os conceitos de ancestral e descendente próprios: Raiz: nó que não possui ancestral próprio Folha: nó que não possui descendente próprio (também chamado nó terminal) O grau de um nó é o número de seus filhos. É o número de sub-árvores disjuntas desse nó As folhas têm grau nulo O grau de uma árvore é o máximo entre os graus de seus nós. Um nó que não é folha é chamado de nó interno ou nó não-terminal. Irmãos: filhos de um mesmo nó. Exemplos na árvore ao lado: Grau de C? 2 Grau de G? 0 Grau da árvore? 3 Quais os irmãos de B? C e D Quais os irmãos de E? Não há Quais os nós não-terminais? A, B, C, D e H Um conjunto de árvores é chamado de floresta. Exemplo:

CES-11 Representações de árvores a) Forma convencional b) Diagrama de conjuntos Representações de árvores Representações de árvores c) Forma parentética Coloca-se entre parêntesis a raiz, seguida das formas parentéticas de suas sub-árvores, ordenadas da esquerda para a direita (A (B (E)) (C (F) (G)) (D (H (I) (J) (K))) ) Identificação recursiva de uma forma parentética: Sendo c um caractere genérico, (c) é uma forma parentética correta. Se α 1, α 2, α 3,..., α n são formas parentéticas corretas, com n > 0, então (c α 1 α 2 α 3... α n ) também será. d) Forma tabulada Diretoria Departamento de Fabricação Seção de Prensas Seção de Tornos Seção de Ferramentaria Seção de Fornos Seção de Banhos Químicos Departamento de Engenharia de Produção Seção de Desenvolvimento de Projetos Seção de Desenhos Seção de Controle de Qualidade Departamento de Manutenção Seção de Eletricistas Seção de Mecânica Seção de Hidráulica Seção de Instalações Prediais Cada nó aparece numa linha, e seus filhos são listados com uma tabulação a mais que a desse nó. Ex: organograma de uma empresa, índice de livros, etc.

Representações de árvores CES-11 e) Forma numerada (ou itemizada) 1 Estruturas de dados 1.1 Listas lineares 1.1.1 Estrutura contígua 1.1.2 Estrutura encadeada 1.1.3 Pilhas e filas 1.2 Árvores 1.2.1 1.2.2 Estruturas de dados 1.2.3 Árvores binárias 1.3 Grafos 1.3.1 Grafos orientados 1.3.2 Grafos não orientados Semelhante à anterior: a numeração de um nó tem como prefixo o número de seu pai, e como sufixo um número que o diferencie dos irmãos. Ordenação dos nós n s de uma árvore a) Ordenação dos filhos de um nó Os filhos de um nó são ordenados da esquerda para a direita Por exemplo, as duas árvores abaixo têm o mesmo pai e os mesmos filhos, mas são diferentes: Ordenação dos nós n s de uma árvore b) Extensão da ordenação da esquerda para a direita Se X e Y são irmãos e X está à direita de Y, então todos os descendentes de X estão à direita de Y e dos seus descendentes. O caminho da raiz até um determinado nó separa os nós que estão à sua esquerda dos que estão à sua direita. Exemplo: C e D são irmãos e C está à esquerda de D F e G estão à esquerda de D, H, I, J e K J não está nem à direita nem à esquerda de H, D, e A

Ordenação dos nós n s de uma árvore c) Ordenação de todos os nós de uma árvore Existem formas de se ordenar e de se percorrer sistematicamente todos os nós de uma árvore: Ordenação ou percurso por nível Ordenação ou percurso em pré-ordem Ordenação ou percurso em pós-ordem Ordenação ou percurso em ordem central (ou in-ordem) Busca em largura Busca em profundidade Percurso por nível n (ou largura) Passos: Primeiramente, visita-se a raiz Depois visitam-se todos os filhos da raiz, da esquerda para a direita Depois os netos, depois os bisnetos da raiz, e assim por diante... Também é chamado percurso ou busca em largura A B C D E F G H I J K Percurso por nível n (ou largura) Percurso por nível n (ou largura) Implementação com uso de fila: Depois que um nó é visitado, seus filhos (da esquerda para a direita) são colocados no final da fila. O próximo nó a ser visitado é o que está no início da fila. Termina quando a fila fica vazia. void OrdenacaoPorNivel(raiz) { Fila q; node p = raiz; if (p!= null) { enqueue(q,p); while (!isempty(q)){ p = first(q); dequeue(q); escreve(p); Para todo f filho de p enqueue(q,f); Fila: A Fila: B, C, D Fila: C, D, E Fila: D, E, F, G Fila: E, F, G, H Fila: F, G, H Fila: G, H Fila: H Fila: I, J, K Fila: J, K Fila: K Fila: vazia void OrdenacaoPorNivel(raiz) { Fila q; node p = raiz; if (p!= null) { enqueue(q,p); while (!isempty(q)){ p = first(q); dequeue(q); escreve(p); Para todo f filho de p enqueue(q,f); Resultado: A B C D E F G H I J K

Percursos em profundidade Se T é uma árvore nula, então uma lista vazia será o percurso em pré-ordem, pós-ordem e ordem-central de T. Se T consiste em um só nó, esse nó será o percurso em pré-ordem, pós-ordem e ordem-central de A. Outros casos: seja T uma árvore de raiz n e sub-árvores T 1, T 2,..., T k. n Percurso em pré-ordem Passos: Primeiramente, a raiz n de T; Em seguida, os nós de T 1 em pré-ordem; Depois, os nós de T 2 em pré-ordem; Assim por diante, até os nós de T k em pré-ordem. n n 1 n 2 n 3 n k n 1 n 2 n 3 n k T 1 T 2 T 3 T k T 1 T 2 T 3 T k Percurso em pré-ordem Artifício manual: anotar o nó ao passar por ele pela primeira vez A B E C F G D H I J K Percurso em pós-ordemp Passos: Primeiramente, os nós de T1 em pós-ordem; Em seguida, os nós de T 2 em pós-ordem; Assim por diante, até os nós de T k em pós-ordem; Por fim, a raiz n de T. n void PreOrdem (node n) { Escrever (n); for (cada filho f de n, da esquerda para a direita) PreOrdem (f); T 1 n 1 T 2 n 2 T 3 n 3 T k n k

Percurso em pós-ordemp Artifício manual: anotar o nó ao passar por ele pela última vez, ou seja, ao se dirigir para seu pai. E B F G C I J K H D A Percurso em ordem-central Passos: Primeiramente, os nós de T 1 em ordem-central; Em seguida, a raiz n de T; Por fim, os nós de T 2,..., T k em ordem-central. n void PosOrdem (node n) { for (cada filho f de n, da esquerda para a direita) PosOrdem (f); Escrever (n); T 1 n 1 T 2 n 2 T 3 n 3 T k n k Percurso em ordem-central Fim Artifício manual: anotar um nó folha ao passar por ele pela primeira vez e um nó não-terminal ao passar por ele pela segunda vez. E B A F C G I H J K D void OrdCentral (node n) { if (n é folha) Escrever (n); else { OrdCentral (Filho esquerdo de n); Escrever (n); for (cada filho c de n, exceto o esquerdo, da esquerda para a direita) OrdCentral (c);