Aula T13 BCC202 Árvores. Túlio Toffolo

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

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

Árvores de Pesquisa (Parte I)

Árvores de Pesquisa (Parte I)

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

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

Organizam dados de forma hierárquica. Acontecem com frequência na natureza. Fáceis de representar e manipular com computadores

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

Árvores de Pesquisa (Parte II)

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

Copiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)

Árvores & Árvores Binárias

Prof. Jesus José de Oliveira Neto

Árvores & Árvores Binárias

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

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

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

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Universidade Federal de Mato Grosso Estrutura de Dados II

INE5408 Estruturas de Dados

AED2 - Aula 04 Vetores ordenados e árvores de busca

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

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

BCC202 - Estrutura de Dados I

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

DAINF - Departamento de Informática

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

Árvores de Pesquisa (Parte II)

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

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

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

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

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

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

Árvores Binárias de Busca

Aula 08. Estruturas de dados Árvore e Grafo

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

Árvores de Pesquisa (Parte II)

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

Árvore Binária Exemplo de Implementação

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

CES-11. Algoritmos e Estruturas de Dados

EAD Árvore árvore binária

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

DATA STRUCTURES, AN ADVANCED APPROACH USING C

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

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

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

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

Pesquisa em Árvores Digitais. Adaptado de David M.

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

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

Árvores. Sérgio Carlos Portari Júnior

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

BCC202 - Estrutura de Dados I

Estruturas de Dados II

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

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

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

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

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

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

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

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

Árvores & Árvores Binárias

Alocação Dinâmica. Túlio Toffolo BCC202 Aula 02 Algoritmos e Estruturas de Dados I

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

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

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

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP

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

Aula T20 BCC202 Pesquisa (Parte 2) Árvores de Pesquisa. Túlio Toffolo

Árvores Conceitos gerais

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

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

INF1010 Lista de Exercícios 2

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

Universidade Federal de Mato Grosso

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Métodos Computacionais. Árvores

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

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

Árvores - Conceitos. Roseli Ap. Francelin Romero

Árvore Binária de Busca

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

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

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

Árvores. Aula 04. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Á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

GGI026 - Árvore rubro-negra

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

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

Transcrição:

Aula T13 BCC202 Árvores Túlio Toffolo www.decom.ufop.br/toffolo

Conceitos básicos n Organiza um conjunto de acordo com uma estrutura hierárquica. n Contém elementos que são chamados de nós n O pai de todos é a raiz 1º. da hierarquia n O contéudo de um nó pode ser de qualquer tipo que se deseje representar

Definição (Aho, Hopcroft e Ullman - 1983) q Um único nó é uma árvore. Este nó é raiz da árvore. q Suponha que n é um nó e T 1, T 2,..., T k sejam árvores com raizes n 1, n 2,..., n k, respectivamente. Podemos construir uma nova árvore tornando n a raiz e T 1, T 2,..., T k sejam subárvores da raiz. Nós n 1, n 2,..., n k são chamados filhos do nó n.

Caminho n Um caminho de n i a n k, onde n i é antecedente a n k, é a sequência de nós para se chegar de n i a n k. n Se n i é antecedente a n k, n k é descendente de n i n O comprimento do caminho é o número de nós do caminho 1.

Outros conceitos n Nó que não tem antecedente: raiz; n Nós que não tem descendentes são chamados de nós folhas. (Os outros são os nós internos) n A altura de um nó na árvore é o caminho de maior comprimento que se pode fazer deste nó a uma folha. n A altura da árvore é a altura de sua raiz. n A profundidade de um nó é o comprimento da raiz até o nó (só existe um caminho)

Caminhamento n A ordem dos filhos dos nós em uma árvore pode ser ou não significativa. q q Exemplos, no heap, a ordem dos filhos não tem significado Outros casos, pode se ter um significado (como veremos em pesquisa em árvores binárias) n Considera-se que se a e b são nós irmãos, e a está à esquerda de b, então todos seus descendentes estão à esquerda de b e todos os descendentes de b.

Caminhamento n Diversas formas de percorrer ou caminhar em uma árvore listando seus nós, as principais: q Pré-ordem (Pré-fixa) q Central (Infixa) q Pós-ordem (Pós-fixa) n Para todas elas: q q q q Se T é uma árvore nula, então a lista é nula. Se T é uma árvore de um único nó então a lista contém apenas este nó. O tratamento é diferenciado para os filhos O que muda é a ordem de apresentação da raiz.

Pré-Ordem n Pré-ordem: lista o nó raiz, seguido de suas subárvores (da esquerda para a direita), cada uma em pré-ordem. Procedimento PREORDEM (n: TipoNo); Início Fim Lista(n); Para cada filho f de n, da esquerda para direita faça PREORDEM(f);

Central n Central: lista os nós da 1ª. subárvore à esquerda usando o caminhamento central, lista o nó raiz n, lista as demais subárvores (a partir da 2ª.) em caminhamento central (da esquerda para a direita) Procedimento CENTRAL (n: TipoNo); Início Se Folha(n) então /* Folha retorna se n é uma folha da árvore ou não */ Lista(n); Senão CENTRAL (FilhoMaisEsquerda(n)); Lista (n); Para cada filho f de n, exceto o mais à esquerda, da esquerda para a direita faça CENTRAL (f); Fim;

Pós-Ordem n Pós-ordem: Lista os nós das subárvores (da esquerda para a direita) cada uma em pós-ordem, lista o nó raiz. Procedimento POSORDEM Início Para cada filho f de n, da esquerda para direita faça POSORDEM(f); Lista(n); Fim;

Classificação de Árvores n Árvore Estritamente Binária q Se cada nó não-folha em uma árvore binária não tem subárvores esquerda e direita vazias

Classificação de Árvores n Árvore Binária Completa q Uma árvore binária completa de nível n é a árvore estritamente binária, onde todos os nós folhas estão no nível n.

Classificação de Árvores n Árvore Binária Quase Completa q Uma árvore binária de nível n é uma árvore binária quase completa se: q Cada nó folha na árvore esta no nível n ou no nível n-1 q Para cada nó nd na árvore com um descentente direito no nível n, todos os descendentes esquerdos de nd que são folhas estão também no nível n

Exercício n Crie um TAD TNo em C cuja informação seja um inteiro e possua ponteiros para duas subárvores: esquerda e direita; n Escreva funções que recebam um ponteiro para a raiz da árvore e façam: q o caminhamento pré-ordem q o caminhamento pós-ordem q o caminhamento central n Entregar em 15min ou postar no moodle (com main e rodando) até as 23h55 de hoje.

TAD TNo typedef int TItem; typedef struct TNo* Apontador; typedef struct TNo TItem Item; Apontador pesq; Apontador pdir; TNo; Algoritmos e Estrutura

Caminhamento: PreOrder void PreOrderRec(TNo* praiz) if (praiz == NULL) return; printf( %d\t,praiz->item); PreOrderRec(pRaiz->pEsq); PreOrderRec(pRaiz->pDir);

Caminhamento: InOrder void InOrderRec(TNo* praiz) if (praiz == NULL) return; InOrder(pRaiz->pEsq); printf( %d\t,praiz->item); InOrder(pRaiz->pDir);

Caminhamento: PostOrder void PostOrderRec(TNo* praiz) if (praiz == NULL) return; PostOrder(pRaiz->pEsq); PostOrder(pRaiz->pDir); printf( %d\t,praiz->item);

Caminhamento: PreOrder não recursivo void PreOrderIt(TNo* praiz) TNo* paux; TPilha P; FPVazia(&P); PEmpilha(&P,&pRaiz); while(!pehvazia(&p)) PDesempilha(&P,&pAux); if (paux == NULL) continue; printf( %d\t,paux->item); PEmpilha(&P,pAux->pDir); PEmpilha(&P,pAux->pEsq);

Caminhamento: InOrder não recursivo void InOrderIt(TArvoreBin* praiz) TArvoreBin* paux; TPilha P; FPVazia(&P); PEmpilha(&P,pRaiz); paux = praiz->pesq; while(!pehvazia(&p) paux!= NULL) if (paux == NULL) PDesempilha(&P,&pAux); printf("%d\t",paux->item); paux = paux->pdir; else PEmpilha(&P,pAux); paux = paux->pesq;

Caminhamento: PostOrder não recursivo void PostOrderIt(TArvoreBin* praiz) TArvoreBin *paux; TPilha P1,P2; FPVazia(&P1); FPVazia(&P2); PEmpilha(&P2,pRaiz); paux = praiz; while(!pehvazia(&p2) ) PDesempilha(&P2,&pAux); PEmpilha(&P1,pAux); if (paux->pesq!= NULL) PEmpilha(&P2,pAux->pEsq); if (paux->pdir!= NULL) PEmpilha(&P2,pAux->pDir); while(!pehvazia(&p1) ) PDesempilha(&P1,&pAux); printf("%d\t",paux->item);

TADs TNo e TArvoreBin typedef int TItem; typedef struct TNo* Apontador; typedef struct No TItem iitem; struct No* pesq; /* Apontador pesq; */ struct No* pdir; /* Apontador pdir; */ TNo; typedef struct TNo* praiz; TArvoreBin;