David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP

Slides:



Advertisements
Apresentações semelhantes
Árvores Passeios.
Advertisements

Marco Antonio Montebello Júnior
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Estrutura de Dados e Algoritmos e Programação e Computadores II
Série de Exercícios.
Árvores.

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Pesquisa em Árvores Digitais
Pesquisa em Memória Primária – Árvores AVL
Filas David Menotti Estruturas de Dados I DECOM – UFOP.
David Menotti Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Aula T11 – BCC202 Pilhas Túlio Toffolo
David Menotti Estruturas de Dados I DECOM – UFOP
Pilha David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Árvores e Árvores Binárias
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Robson Godoi / Sandra Siebra
Prof. Ernesto Lindstaedt
Árvore Geradora Mínima
Fundamentos sobre Árvores
Algorítmos e estrutura de dados III
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III
1. Se este nó é raiz de uma árvore QuasiEquilibrada de ordem k, e
Á R V O R E S.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática

Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
Aula 06 – 05/04 Árvores binárias.
– Aula 20 Adaptado por Reinaldo Fortes para o curso de
Prof. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Prof. Hilton Cardoso Marins Junior

Introdução a Árvores e Árvores Binárias
Árvores de Busca Binária
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
28 de outubro de Árvores Binárias e Árvores AVL Parte 2 Katia Guimarães.
Árvores e Árvores Binárias
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
BANCO DE DADOS II Árvore de Dados. FATEC - GUARATINGUETÁ Professor: Eduardo Barbosa Adiel Lemos Ana Renata Bruno Michael Jéssica Fernanda Layla Monique.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP Árvores David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP

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

Definição (Aho, Hopcroft e Ullman - 1983) Um único nó é uma árvore. Este nó é raiz da árvore. Suponha que n é um nó e T1, T2, ..., Tk sejam árvores com raizes n1, n2, ... , nk, respectivamente. Podemos construir uma nova árvore tornando n a raiz e T1, T2, ...., Tk sejam subárvores da raiz. Nós n1, n2, ..., nk são chamados filhos do nó n. Algoritmos e Estrutura de Dados I

Caminho Um caminho de ni a nk, onde ni é antecedente a nk, é a sequência de nós para se chegar de ni a nk. Se ni é antecedente a nk, nk é descendente de ni O comprimento do caminho é o número de nós do caminho – 1. Algoritmos e Estrutura de Dados I

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

Caminhamento A ordem dos filhos dos nós em uma árvore pode ser ou não significativa. 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) 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. Algoritmos e Estrutura de Dados I

Caminhamento Diversas formas de percorrer ou caminhar em uma árvore listando seus nós, as principais: Pré-ordem (Pré-fixa) Central (Infixa) Pós-ordem (Pós-fixa) Para todas elas: 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. Algoritmos e Estrutura de Dados I

Pré-Ordem 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 Lista(n); Para cada filho f de n, da esquerda para direita faça PREORDEM(f); Fim Algoritmos e Estrutura de Dados I

Central 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; Algoritmos e Estrutura de Dados I

Pós-Ordem 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; Algoritmos e Estrutura de Dados I

Exercício Crie um TAD TArvoreBin em C cuja informação seja um inteiro e possua ponteiros para duas sub-árvores: esquerda e direita; Escreva funções que recebam um ponteiro para a raiz da árvore e façam: o caminhamento pré-ordem o caminhamento pós-ordem o caminhamento central Algoritmos e Estrutura de Dados I

TAD TArvoreBin typedef int TItem; typedef struct TArvoreBin* Apontador; typedef struct TArvoreBin { TItem Item; Apontador pEsq; Apontador pDir; } TArvore; Algoritmos e Estrutura de Dados I

Caminhamento: PreOrder void PreOrderRec(TArvoreBin* pRaiz) { if (pRaiz == NULL) return; printf(“%d\t”,pRaiz->Item); PreOrderRec(pRaiz->pEsq); PreOrderRec(pRaiz->pDir); } Algoritmos e Estrutura de Dados I

Caminhamento: InOrder void InOrderRec(TArvoreBin* pRaiz) { if (pRaiz == NULL) return; InOrder(pRaiz->pEsq); printf(“%d\t”,pRaiz->Item); InOrder(pRaiz->pDir); } Algoritmos e Estrutura de Dados I

Caminhamento: PostOrder void PostOrderRec(TArvoreBin* pRaiz) { if (pRaiz == NULL) return; PostOrder(pRaiz->pEsq); PostOrder(pRaiz->pDir); printf(“%d\t”,pRaiz->Item); } Algoritmos e Estrutura de Dados I

Caminhamento: PreOrder não recursivo void PreOrderIt(TArvoreBin* pRaiz) { TArvoreBin* 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); } Algoritmos e Estrutura de Dados I

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; Algoritmos e Estrutura de Dados I

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); Algoritmos e Estrutura de Dados I

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

Classificação de Árvores Árvore Binária Completa 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. Algoritmos e Estrutura de Dados I

Classificação de Árvores Árvore Binária Quase Completa Uma árvore binária de nível n é uma árvore binária quase completa se: Cada nó folha na árvore esta no nível n ou no nível n-1 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 Algoritmos e Estrutura de Dados I