Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Marco Antonio Montebello Júnior
INFORMAÇÕES COMPLEMENTARES
AULA 8 Profa. Sandra de Amo GBC053 – BCC
Marco Antonio Montebello Júnior
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Estruturas de Dados Árvores Binárias
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Estrutura de Dados e Algoritmos e Programação e Computadores II
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Indices estruturados por B-TREE
Método de Acesso Dinâmico - B-Tree AULA 14 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Método de Acesso Dinâmico: B-Tree - Deleção Chaves de busca sem duplicatas AULA 9 Profa. Sandra de Amo GBC053 – BCC
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Série de Exercícios.
Relações Adriano Joaquim de O Cruz ©2002 NCE/UFRJ
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.

Arquivos Seqüenciais Inhaúma Neves Ferraz
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Pesquisa em Memória Primária – Árvores de Busca
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Árvores e Árvores Binárias
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Aula 4 Nomes, Vinculações, Tipos e Escopos
Robson Godoi / Sandra Siebra
Listas Encadeadas.
Provas de Concursos Anteriores
Prof. Ernesto Lindstaedt
Fundamentos sobre Árvores
Árvore Binária de Busca
Hamburgo, Alemanha Definir o caminho que irá permitir a Lions Clubs International alcançar o seu potencial pleno como organização.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
ESTATÍSTICA.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Lemas (Sudkamp)  .
Coordenação Geral de Ensino da Faculdade
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algorítmos e estrutura de dados III
Rotação Simples e Dupla Katia Guimarães
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Conceitos básicos em grafos
Á R V O R E S.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Árvores Prof. Dr. rer. nat. Daniel Duarte Abdala DAS 5102 – Fundamentos da Estrutura da Informação 1.
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
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
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Introdução a Árvores e Árvores Binárias
Árvores e Árvores Binárias
Transcrição da apresentação:

Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1

Sumário Bizus para a Prova A1 Revisão Para a A1; Corrigir Trabalho. Prof.: Sergio Pacheco 2 2

Prova em Consulta ?? E cada um o SEU !!!!! Aquele Professor ...., Disse que ia ser fácil!!!! E cada um o SEU !!!!! Prof.: Sergio Pacheco 3 3

Prova em Dupla ?? Prof.: Sergio Pacheco 4 4

Listas Generalizadas - Definições São estruturas muitos flexíveis, do tipo recursiva, que garantem a construção de estruturas simples as mais complexas. Uma lista generalizada L [e1,e2,e3...,en],n>0; Cada elemento pode ser um átomo ou então uma sublista caracterizando uma outra lista generalizada. O tamanho da lista é definida pelo valor de n. Se n = 0 é dita lista vazia; A lista é definida pela cabeça e1(head) e o resto outros elementos (tail). Prof.: Sergio Pacheco 5 5

Listas Generalizadas - Definições b c e f Representação Lista L= [a, [b,c],d,[e, [ ],f ] ]; Prof.: Sergio Pacheco 6 6

Listas Generalizadas - Exercícios Desenhe a lista generalizada correspondente : L1 = [[[1], 2], [3, [4, 5]]]; L2 = [[1, [2, 3]], [[4]], 5]; L3 = [[[1, 2], 3], [4, [5]]]; Prof.: Sergio Pacheco 7 7

Listas Generalizadas - Gabaritos Desenhe a lista generalizada correspondente : L1 = [[[1], 2], [3, [4, 5]]]; Prof.: Sergio Pacheco 8 8

Listas Generalizadas - Gabaritos Desenhe a lista generalizada correspondente : L2 = [[1, [2, 3]], [[4]], 5]; Prof.: Sergio Pacheco 9 9

Listas Generalizadas - Gabaritos Desenhe a lista generalizada correspondente : L3 = [[[1], 2], 3], [4, [5]]]; Prof.: Sergio Pacheco 10 10

Ainda não !! -- Notação Polonesa ou prefixa Notação Polonesa (no Brasil, em Portugal é Notação Polaca) ou Notação de Prefixo: É uma forma de notação para lógica, aritmética e álgebra. Não precisa de parênteses ou outros delimitadores para indicar os cálculos que devem ser realizados primeiramente; Os operadores devem preceder os dois valores numéricos associados. O matemático polonês Jan Łukasiewicz criou essa notação em torno de 1920 para simplificar a lógica nas sentenças matemáticas; Não é muito usado na matemática convencional, mas muito usado nas ciências da computação. Prof.: Sergio Pacheco 11 11

Notação Polonesa ou prefixa - Exemplo Tradicional: A * B - C / D Polonesa: - * A B / C D Prof.: Sergio Pacheco 12 12

Avaliar Expressões Existe 3 tipos de notação, que são: Infixa = A + B - C; Prefixa = - + ABC; Posfixa = AB + C -. Refere-se a posição relativa do operador em relação aos demais operando; Na notação prefixa o operador fica antes dos operandos; Na notação posfixa o operador fica depois dos operandos. Prof.: Sergio Pacheco 13 13

Lê-se da esquerda para a direita Avaliar Expressões Avalie está função abaixo: A + B * C; Como ficaria na forma prefixa e posfixa ? As operações com a precedência mais alta são convertidas em primeiro lugar; Depois que uma parte da expressão for convertida, deve ser tratada como um único operando; Operadores de mesma precedência, são avaliados da esquerda para a direita. Lê-se da esquerda para a direita Prof.: Sergio Pacheco 14 14

Avaliar Expressões Posfixa: A + B * C; Passo 1 A + ( B * C) Passo 2 Prof.: Sergio Pacheco 15 15

Avaliar Expressões Prefixa: A + B * C; Passo 1 A + ( B * C) Passo 2 Prof.: Sergio Pacheco 16 16

Exercícios Dadas as formas de expressões Infixa convertê-las para Posfixa: A + B * C; A + B – C; (A + B) * ( C + D); ((A + B) * C – (D - E) / (F + G)); A – B / (C * D / E). Prof.: Sergio Pacheco 17 17

Árvore Existe um nodo denominado Raiz; Os demais nodos forma sub-árvores, desde que possuam nós filhos, onde cada um desses subconjuntos é uma árvore, ou seja, tirando o nó raiz os nós restantes podem ser divididos em n subconjuntos disjuntos, que são as sub-árvores, e as quais, por sua vez, também são árvores ; Um nó folha não possui filhos, e seus ponteiros são nulos. árvore == 0 então a árvore é dita vazia. Prof.: Sergio Pacheco 18 18

Cada nó deve ser atingido partindo pelo nó raiz. Árvore – árvore genealógica Marcelo André Rodrigo Gustavo Márcia Viviane Daniel Ângela Marcos Pedro Cada nó deve ser atingido partindo pelo nó raiz. Prof.: Sergio Pacheco 19 19

Árvore - Exercícios Quais são os graus dos nodos 18 e 20? Qual é a profundidade da árvore? Quais são os graus dos nodos 18 e 20? Qual é o nível dos nós 9, 13, 1 7 e 18 ? Prof.: Sergio Pacheco 20 20

Árvore - Exercícios Qual é a profundidade da árvore? Quais são os graus dos nodos 18 e 20? R: nó 18 grau 2; nó 20 grau 0. Qual é o nível dos nós 9, 13, 1 7 e 18 ? R: nível do no 9 = 4; nível do no 13 = 3; nível do no 17 = 2; nível do no 18 = 1. Prof.: Sergio Pacheco 21 21

Árvore – Revisão – Altura (h) Prof.: Sergio Pacheco 22 22

Árvore Binária Árvore binária se caracteriza por seus nodos terem no máximo dois filho, ou seja, é uma árvore de grau 2 (no máximo); Deve-se atentar para os conceitos de sub-arvore direita e esquerda. Nó pai e nó filhos (esquerda direita); Prof.: Sergio Pacheco 23 23

Árvore Binária Se A é a raiz de uma árvore binária e B é a raiz de sua subárvore direita ou esquerda, então diz-se que A é o pai de B e que B é o filho direito ou esquerdo de A. A B C D E G F H I Prof.: Sergio Pacheco 24 24

Árvore Binária Se A é a raiz de uma árvore binária e B é a raiz de sua subárvore direita [ou esquerda], então diz-se que A é o pai de B e que B é o filho direito [ou esquerdo] de A. A B C D E G F H I Subárvore Esquerda Subárvore direita ? Prof.: Sergio Pacheco 25 25

Árvore Binária Se A é a raiz de uma árvore binária e B é a raiz de sua subárvore direita ou esquerda, então diz-se que A é o pai de B e que B é o filho direito ou esquerdo de A. A B C D E G F H I Subárvore Esquerda Subárvore direita Nos Irmãos ? Prof.: Sergio Pacheco 26 26

Árvore Binária O nó n1 é um ancestral do nó n2 (e n2 é um descendente de n1), se n1 for o pai de n2 ou o pai de algum ancestral de n2. Prof.: Sergio Pacheco 27 27

Árvore Binária Mas E não é nem ancestral nem descendente de C. Prof.: Sergio Pacheco 28 28

Árvore Binária B, D, E e G são descendentes esquerdos de A. Prof.: Sergio Pacheco 29 29

Árvore Binária C, F, H e I são descendentes direitos de A. Prof.: Sergio Pacheco 30 30

Árvore Binária Se todo nó que não é folha numa árvore binária tiver Subárvore esquerda e direita não-vazias, a árvore será considerada uma árvore estritamente binária. A B C D E F H Prof.: Sergio Pacheco 31 31

Árvore Binária Uma árvore binária completa de profundidade d é a árvore estritamente binária em que todas as folhas estejam no nível d, ou seja, no mesmo nível. A B C D E F H G I J L M N O P Prof.: Sergio Pacheco 32 32

Árvore Binária Como todas as folhas nesta árvore estão no nível d, a árvore contém 2d folhas e 2d-1 nós não folhas. A B C D E F H G I J L M N O P Prof.: Sergio Pacheco 33 33

Árvore Binária Uma árvore binária de profundidade (altura) d será uma árvore binária quase completa se: Cada folha na árvore estiver no nível d ou no nível d - 1. E, para cada nó com descendente direito no último nível, existe a obrigatoriedade de ter, também, descendentes esquerdos, ou seja, uma árvore binária quase completa é uma árvore em que cada nó no último nível que tem um filho a direita tem também um filho a esquerda. Por outro lado no último nível, ter um filho a esquerda não requer um nó com filho a direita. Prof.: Sergio Pacheco 34 34

Árvore Binária Uma árvore binária de profundidade d será uma árvore binária quase completa se: Cada folha na árvore estiver no nível d ou no nível d - 1. No último nível tendo um filho a direita, deve-se ter um filho a esquerda. Prof.: Sergio Pacheco 35 35

Árvore Binária – Números de nós Uma árvore estritamente binária quase completa com n folhas tem 2n - 1 nós, assim como qualquer outra árvore estritamente binária com n folhas, onde n é o numero de folhas; Uma árvore binária quase completa com n folhas, que não seja estritamente binária, tem 2n nós, onde n é o numero de folhas. Prof.: Sergio Pacheco 36 36

Árvore Binária – Números de nós Uma árvore estritamente binária com n folhas contém sempre 2n - 1 nós. Prof.: Sergio Pacheco 37 37

Árvore Binária – Números de nós Uma árvore estritamente binária completa (balanceada) com altura h. Tem-se com a fórmula (2h+1 -1), o numero de nós; Os números de nós dessa árvore é descoberto pela fórmula a cima; h = 2 com isso, 2 2+1 – 1 = 7 nós. Prof.: Sergio Pacheco 38 38

Classificar as árvores binárias, quanto ao tipo, e qual é a fórmula para calcular o números de nós. Arvore estritamente binária (2 * folhas - 1); Arvore estritamente binária, quase completa (2 * folhas -1) ou 2Nivel d e 2Nivel d -1 nós não folhas; Arvore estritamente binária completa (2 h+1 - 1); Árvore binária e quase completa 2 * folhas. Prof.: Sergio Pacheco 39 39

Numeração da Árvore Os nós de uma árvore binária quase completa podem ser numerados: Atribui-se o número 1 à raiz; Um filho esquerdo recebe a atribuição de um número equivalente ao dobro do número atribuído a seu pai; e Um filho direito recebe a atribuição de um número equivalente ao dobro do número atribuído a seu pai mais um. Prof.: Sergio Pacheco 40 40

Numeração da Árvore Exemplos de numeração de árvores binárias quase completas: Prof.: Sergio Pacheco 41 41

Percurso pre-ordem em-ordem pós-ordem Prof.: Sergio Pacheco 42 42

Exercícios em-ordem - (A + B)/(C - D) * E; pre-ordem – * / + A B – C D E pós-ordem – A B + C D - / E * Prof.: Sergio Pacheco 43 43

Árvore de Pesquisa Binária Serve para guardar valores de tal forma que a recuperação dos mesmos possa ser efetuada de forma ordenada; Assim, cada nó interno de uma árvore binária de pesquisa obedece aos seguintes critérios: Todo elemento armazenado na subárvore da esquerda for menor que R (Raiz); Nenhum elemento armazenado na subárvore da direita for menor que R (Raiz); Nenhum elemento armazenado na subárvore da esquerda for maior que R (Raiz); As subárvores da esquerda e da direta também forem árvore de busca binária. * C Prof.: Sergio Pacheco 44 44

Árvore de Pesquisa Binária Exemplo {50,10,15,20,0,30,70} 50 70 10 15 20 * 30 A localização do ‘ponto de inserção’ é semelhante à busca por um valor na árvore. Após a inserção do novo elemento, a árvore deve manter as propriedades de ‘árvore binária de busca’. O nó inserido é sempre uma folha. Prof.: Sergio Pacheco 45 45

Árvore de Pesquisa Binária Exercícios {g,i,a,b,h,j,l,m,z, d} g m d i a b h l j z Prof.: Sergio Pacheco 46 46

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 Prof.: Sergio Pacheco 47 47

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 15>14 15 Prof.: Sergio Pacheco 48 48

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 4<14 14 4 15 Prof.: Sergio Pacheco 49 49

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 9<14 14 4 15 Prof.: Sergio Pacheco 50 50

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 4 15 9>4 9 Prof.: Sergio Pacheco 51 51

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 7<14 14 4 15 9 Prof.: Sergio Pacheco 52 52

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 4 15 7>4 9 Prof.: Sergio Pacheco 53 53

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 4 15 9 7<9 7 Prof.: Sergio Pacheco 54 54

Revisão - Inserção em árvore binária Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 18>14 4 15 9 7 Prof.: Sergio Pacheco 55 55

Revisão - Inserção em árvore binária Continuar: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 14 4 15 9 7 Prof.: Sergio Pacheco 56 56

Implementação Considerando a seguinte estrutura (um nó da árvore); struct no { int numero; struct no *esquerda; struct no *direita; } ARV; 12 P* 11 13 Prof.: Sergio Pacheco 57 57

Implementação Se p é um ponteiro para o nó n de uma árvore binária, e sendo x do tipo do dado do nó e q do tipo ponteiro para nó: x = Dado(p): retorna o conteúdo de n; q = Esq(p) ou Dir(p): retorna ponteiro para o filho esquerdo/direito de n; Retorna NULL se Esq ou Dir não existir. Prof.: Sergio Pacheco 58 58

Implementação Inserção em uma árvore binária, levando em consideração a árvore de busca binária, tem-se o seguinte algoritmo: int verifica_empty (ARV a){ return (a == NULL); } ARV insere (ARV a, int b){ ARV nova; if (verifica_empty(a)){ nova = (ARV) malloc (sizeof(NO)); nova->esq = NULL; nova->dir = NULL; nova->info = b; printf("Insercao do numero %d na AB realizada!", b); return nova; }else{ if ( b > a->info ) a->dir = insere(a->dir, b); else a->esq = insere(a->esq, b); return a; Prof.: Sergio Pacheco 59 59

Implementação A função recebe um ponteiro para o nó Raiz 12 P* 11 Nó Raiz - Posição memória (106537). O valor a inserir é 10 (numero) ? if ( b > a->info ){ a->dir = insere(a->dir, b); }else{ a->esq = insere(a->esq, b); } return a; Prof.: Sergio Pacheco 60 60

Implementação A função recebe um ponteiro para o nó Raiz 12 P* 11 Nó Raiz - Posição memória (106537). O valor a inserir é 10 (numero) ? if ( b > a->info ){ a->dir = insere(a->dir, b); }else{ a->esq = insere(a->esq, b); } return a; Prof.: Sergio Pacheco 61 61

Implementação A função recebe um ponteiro para o nó Raiz 12 P* 11 10 Nó Raiz - Posição memória (106537). O valor a inserir é 10 (numero) ? if ( b > a->info ){ a->dir = insere(a->dir, b); }else{ a->esq = insere(a->esq, b); } return a; 10 P* Neste caso se deparou com a condição de parada. Qual é? Prof.: Sergio Pacheco 62 62

Implementação Algoritmo para varrer a árvore em ordem, usa-se a recursividade como aliada: void lista_em_Ordem (ARV a){ if (! EMPTY(a) ){ lista_em_Ordem(a->esq); printf(" %d ", a->info); lista_em_Ordem(a->dir); } Se árvore vazia, fim; Percorremos a subárvore esquerda em ordem; Visitamos a raiz; Percorremos a subárvore direita em ordem; Prof.: Sergio Pacheco 63 63

Implementação Algoritmo para varrer a árvore em pre órdem, usa-se a recursividade como aliada: // varre a árvore binária em pre órdem void lista_pre_Ordem (ARV a){ if (! EMPTY(a) ){ printf(" %d ", a->info); lista_pre_Ordem(a->esq); lista_pre_Ordem(a->dir); } Se árvore vazia, fim; Visitamos a raiz; Percorremos a subárvore esquerda em pré-ordem; Percorremos a subárvore direita em pré-ordem. Prof.: Sergio Pacheco 64 64

Implementação - Fazer Algoritmo para varrer a árvore em pos órdem, usa-se a recursividade como aliada: // varre a árvore binária em pre órdem void lista_pos_Ordem (ARV a){ if (! EMPTY(a) ){ lista_pos_Ordem (a->esq); lista_pos_Ordem(a->dir); printf(" %d ", a->info); } Se árvore vazia, fim; Percorremos a subárvore esquerda em pós-ordem; Percorremos a subárvore direita em pós-ordem; e Visitamos a raiz. Prof.: Sergio Pacheco 65 65

Bom final de semana e até semana que vem !!! Estudem !!!! ( Prof.: Sergio Pacheco 66 66