Árvores e Árvores Binárias
|
|
|
- Maria dos Santos Borges Martini
- 10 Há anos
- Visualizações:
Transcrição
1 MAC Estruturas de Dados
2 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvores do capítulo 4 do livro N. Wirth. Algorithms + Data Structures = Programs. Prentice Hall, 1976.
3 Árvore Uma árvore do tipo T é constituída de uma estrutura vazia, ou um elemento ou um nó do tipo T chamado raiz com um número finito de árvores do tipo T associadas, chamdadas as sub-árvores da raiz. A B C D E F G H I J K L
4 Nomenclatura: árvore ordenada Uma árvore é chamada ordenada quando a ordem das subárvores é significante. Assim, as duas árvores ordenadas seguintes são diferentes. A B C D A C D B Numa árvore que representa os descendentes de uma família real, a ordem das subárvores pode ser importante pois pode determinar a ordem de sucessão da coroa.
5 Nomenclatura: pai, filho, nível A B C D E F G H I J K L Pai e filho: Um nó y abaixo de um nó x é chamado filho de x. x é dito pai de y. Exemplo: B é pai de E e F. Irmão: Nós com o mesmo pai são ditos irmãos. Exemplo: B, C, D são irmãos. Nível de um nó: A raiz de uma árvore tem nível 1. Se um nó tem nível i, seus filhos têm nível i + 1. Exemplo: E, F, G e H têm nível 3.
6 Nomenclatura: altura, folha, grau A B C D E F G H I J K L Altura ou profundidade de uma árvore: É o máximo nível de seus nós. A árvore do exemplo tem altura 4. Folha ou nó terminal: É um nó que não tem filhos. Exemplo: I, J, K, L são folhas. Nó interno ou nó não terminal: É um nó que não é folha. Grau de um nó: É o número de filhos do nó. Exemplo: B tem grau 2, G tem grau 1.
7 Nomenclatura: grau de árvore, árvore binária A B C D E F G H I J K L Grau de uma árvore: É o máximo grau de seus nós. A árvore do exemplo tem grau 3. Usando a nomenclatura vista, podemos definir a árvore binária. Árvore binária: É uma árvore ordenada de grau 2.
8 Árvore binária Uma árvore binária é vazia ou um nó chamado raiz mais duas árvores binárias disjuntas chamadas subárvore esquerda e subárvore direita. Exemplo * / e f a b c d Pode representar a expressão aritmática: ((a + b) /(c d)) (e + f ) Veja como a estrutura de árvore binária expressa de maneira clara a precedência das operações, sem necessidade de usar parêntesis.
9 Aplicações que usam árvores e árvore binárias Problemas de busca de dados armazenados na memória principal do computador: árvore binária de busca, árvores (quase) balanceadas como AVL, rubro-negra, etc. Problemas de busca de dados armazenados na memória secundárias principal do computador (disco rígico): e.g. B-árvores. Aplicações em Inteligência Artificial: árvores que representam o espaço de soluções, e.g. jogo de xadrez, resolução de problemas, etc. No processamento de cadeias de caracteres: árvore de sufixos. Na gramática formal: árvore de análise sintática. Em problemas onde a meta é achar uma ordem que satisfaz certas restrições (e.g. testar a propriedade de uns-consecutivos numa matriz, reconhecer grafos intervalo, planaridade de grafo, etc.): árvore-pq.
10 Implementação de uma árvore binária Em Pascal podemos declarar o registro node assim: type node = record key: integer; left, right: node end Vamos fazer um pequeno exercício: construir uma árvore binária constituída de n nós, para um dado n, que tenha mínima altura. Para isso, vamos alocar o máximo numero possível de nós em cada nível da árvore, exceto no último que pode estar incompleto. Podemos distribuir nós em igual quantidade para a esquerda e a direita de cada nó. Teremos uma árvore perfeitamente balanceada.
11 Construção de uma árvore perfeitamente balanceada Árvore perfeitamente balanceada: para todo nó da árvore, os números de nós das suas duas subárvores diferem no máximo em um. Seja a função tree(n) que gera uma árvore perfeitamente balanceada com n nós. Informalmente tree(n) pode ser definida recursivamente assim: 1 Aloque um nó para ser a raiz. 2 Coloque na esquerda da raiz uma árvore gereada por tree(nl = n div 2). 3 Coloque na direita da raiz uma árvore gereada por tree(nr = n n l 1). Veremos exemplos de árvores assim construídas.
12 Árvore perfeitamente balanceada com n = 1 n = 1
13 Árvore perfeitamente balanceada com n = 2 n = 2
14 Árvore perfeitamente balanceada com n = 3 n = 3
15 Árvore perfeitamente balanceada com n = 4 n = 4
16 Árvore perfeitamente balanceada com n = 5 n = 5
17 Árvore perfeitamente balanceada com n = 6 n = 6
18 Árvore perfeitamente balanceada com n = 7 n = 7
19 Progama em Pascal - livro de N. Wirth type ref = node; node = record key: integer; left, right: ref end; var n: integer; root: ref; function tree(n: integer): ref; var newnode: ref; x, nl, nr: integer; begin { constrói uma árvore perf. balanceada de n nós} if n = 0 then tree:=nil else begin nl:= n div 2; nr:= n - nl - 1; read(x); new(newnode); begin newnode.key:=x; newnode.left:=tree(nl); newnode.right:=tree(nr) end; tree:=newnode end end
20 Formas de percorrer uma árvore Em algumas aplicações, é necessário percorrer uma árvore de forma sistemática, visitando cada nó da árvore uma única vez, em determinada ordem. Por exemplo, se cada nó da árvore possui um campo que armazena o salário, então podemos querer visitar cada nó para fazer um reajuste salarial. A visita seria atualizar o campo salário. Não podemos esquecer nenhum nó, nem queremos visitar um nó mais do que uma vez. Neste caso, a ordem de visita não é importante. Mas em algumas outras aplicações, queremos visitar os nós em certa ordem desejada. Veremos várias formas para percorrer uma árvore binária. Pré-ordem. In-ordem ou ordem simétrica. Pós-ordem.
21 Percorrer uma árvore binária em pré-ordem Percorrer uma árvore binária em pré-ordem: 1 Vistar a raiz. 2 Percorrer a sua subárvore esquerda em pré-ordem. 3 Percorrer a sua subárvore direita em pré-ordem. Visitar um nó significa executar uma certa ação no nó.
22 Exemplo de percurso em pré-ordem Percorrer uma árvore binária em pré-ordem: 1 Vistar a raiz. 2 Percorrer a sua subárvore esquerda em pré-ordem. 3 Percorrer a sua subárvore direita em pré-ordem. A B C D E F G H I Percurso em pré-ordem: A B D C E G F H I O percurso em pré-ordem segue os nós até chegar os mais profundos, em ramos de subárvores da esquerda para a direita. É conhecida usualmente pelo nome de percurso em profundidade (depth-first).
23 Exemplo de percurso em pré-ordem Percorrer uma árvore binária em pré-ordem: 1 Vistar a raiz. 2 Percorrer a sua subárvore esquerda em pré-ordem. 3 Percorrer a sua subárvore direita em pré-ordem. A B C D E F G H I Percurso em pré-ordem: A B D C E G F H I O percurso em pré-ordem segue os nós até chegar os mais profundos, em ramos de subárvores da esquerda para a direita. É conhecida usualmente pelo nome de percurso em profundidade (depth-first).
24 Procedimento pre-order em Pascal É fácil escrever um procedimento recursivo para realizar a pré-ordem. Em Pascal: type ref = node; node = record key: integer; left, right: ref end; procedure pre-order(t: ref); begin if t nil then begin visita(t); pre-order(t.left); pre-order(t.right); end end
25 Percorrer uma árvore binária em in-ordem Percorrer uma árvore binária em in-ordem: 1 Percorrer a sua subárvore esquerda em in-ordem. 2 Vistar a raiz. 3 Percorrer a sua subárvore direita em in-ordem. A in-ordem visita a raiz entre as ações de percorrer as duas subárvores. É conhecida também pelo nome de ordem simétrica.
26 Exemplo de percurso em in-ordem Percorrer uma árvore binária em in-ordem: 1 Percorrer a sua subárvore esquerda em in-ordem. 2 Vistar a raiz. 3 Percorrer a sua subárvore direita em in-ordem. A B C D E F G H I Percurso em in-ordem: D B A E G C H F I
27 Procedimento in-order em Pascal É fácil escrever um procedimento recursivo para realizar a in-ordem. Em Pascal: type ref = node; node = record key: integer; left, right: ref end; procedure in-order(t: ref); begin if t nil then begin in-order(t.left); visita(t); in-order(t.right); end end
28 Exemplo de percurso em in-ordem Queremos imprimir os nós de uma árvore binária apontada por t em uma impressora do tipo matricial, em que cada linha é impressa de cada vez. A visita de um nó significa imprimi-lo pela impressora. A ordem de visita dos nós é quase a in-ordem, que chamaremos de in -ordem, com a simples inversão na ordem de percurso das duas subárvores: Percorrer uma árvore binária em in -ordem: 1 Percorrer a sua subárvore direita em in -ordem. 2 Vistar a raiz. 3 Percorrer a sua subárvore esquerda em in -ordem. A B C D E Árvore impressa: A C B E D
29 Procedimento de impressão em Pascal O livro de Wirth apresenta o seguinte procedimento para imprimir uma árvore binária. Note a sua semelhança com a in-ordem, trocando-se apenas left com right. type ref = node; node = record key: integer; left, right: ref end; procedure print-tree(t: ref; h: integer); var i: integer; begin {imprime árvore t com indentação h} if t nil then begin print-tree(t.right, h+1); for i:= 1 to h do write( ); writeln(t.key); print-tree(t.left, h+1); end end
30 Percorrer em in-ordem sem usar recursão A recursão facilita a escrita do algoritmo de percurso, mas podemos fazer o percurso, digamos em in-ordem, sem usar recursão. Para isso usamos uma pilha. Suponhamos que já existem as rotinas push e pop. O apontador t aponta para a árvore binária a ser percorrida. in-order(t): 1: p t 2: while p nil or pilha não vazia do 3: if p nil then 4: push(p) 5: p left(p) 6: else 7: pop(p) 8: visita(p) 9: p right(p) 10: end if 11: end while
31 Percorrer uma árvore binária em pós-ordem Percorrer uma árvore binária em pós-ordem: 1 Percorrer a sua subárvore esquerda em pós-ordem. 2 Percorrer a sua subárvore direita em pós-ordem. 3 Vistar a raiz.
32 Exemplo de percurso em pós-ordem Percorrer uma árvore binária em pós-ordem: 1 Percorrer a sua subárvore esquerda em pós-ordem. 2 Percorrer a sua subárvore direita em pós-ordem. 3 Vistar a raiz. A B C D E F G H I Percurso em pós-ordem: D B G E H I F C A
33 Outro exemplo de percurso em pós-ordem Percorrer uma árvore binária em pós-ordem: 1 Percorrer a sua subárvore esquerda em pós-ordem. 2 Percorrer a sua subárvore direita em pós-ordem. 3 Vistar a raiz. Exemplo * / e f a b c d Percurso em pós-ordem: a b + c d / e f + A representação de uma expressão aritmética com o operador no final dos operandos é conhecida pelo nome de notação reversa ou polonesa.
34 Outro exemplo de percurso em pós-ordem Percorrer uma árvore binária em pós-ordem: 1 Percorrer a sua subárvore esquerda em pós-ordem. 2 Percorrer a sua subárvore direita em pós-ordem. 3 Vistar a raiz. Exemplo * / e f a b c d Percurso em pós-ordem: a b + c d / e f + A representação de uma expressão aritmética com o operador no final dos operandos é conhecida pelo nome de notação reversa ou polonesa.
35 Procedimento post-order em Pascal É fácil escrever um procedimento recursivo para realizar a pós-ordem. Em Pascal: type ref = node; node = record key: integer; left, right: ref end; procedure post-order(t: ref); begin if t nil then begin post-order(t.left); post-order(t.right); visita(t); end end
36 Percurso em largura Há ainda outras formas usuais para percorrer uma árvore. Percurso em largura ou em nível (breadth-first): percorre a árvore em ordem crescente de seus níveis e, em cada nível, da esquerda para a direita. Uma fila é usada para realizar este percurso. A B C D E F G H I Percurso em largura: A B C D E F G H I
37 Aplicações que usam percurso de árvores Há várias aplicações que se baseiam em percurso de árvores. Adota-se uma ordem apropriada de percurso. Usa-se uma rotina adequada para visitar cada nó. Exercícios: 1 Considere uma árvore binária dada onde cada nó tem um campo adicional chamado alt. Escreva um algoritmo que coloque no campo alt de cada nó x da árvore binária a altura da subárvore enraizada em x. Dica: use pós-ordem e uma rotina apropriada de visita. Tente fazer este exercício e veja o por que da adoção da pós-ordem. 2 Em algumas situações, é desejável ter um campo adicional pai em cada nó da árvore que aponta para o nó pai. No caso de raiz, o seu campo pai deve apontar para nil. Suponha uma árvore binária existente que reservou este campo pai em cada nó mas apenas os campos key, left e right estão definidos. Escreva uma algoritmo para definir o
ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira
ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira ÁRVORES ED2: MSc. Daniele Oliveira 2 Introdução Filas, pilhas» Estruturas Lineares Um dos exemplos mais significativos de estruturas não-lineares são
- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem
Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
PROGRAMAÇÃO II 4. ÁRVORE
4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em
EAD Árvore árvore binária
EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore
Algoritmos e Estruturas de Dados: Árvore Binária
Algoritmos e Estruturas de Dados: Árvore Binária Exemplo de árvore binária e são os filhos de Altura desta árvore é 4 é a raiz da sub-árvore esquerda de Rômulo Silva de Oliveira Departamento de Automação
- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Árvores Genéricas Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem
ESTRUTURA DE DADOS DCC013
ESTRUTURA DE DADOS DCC013 Árvores Pesquisa sequencial Preliminares Elementos pesquisados sucessivamente Comparação determina se o elemento foi encontrado ou não Exemplo: buscar 4 (Arrays e lista encadeada)
ESTRUTURA DE DADOS PILHA
ESTRUTURA DE DADOS PILHA CONCEITO DE PILHAS - Pilhas são listas lineares onde a inserção de um novo item ou a remoção de um item já existente se dá em uma única extremidade, no topo. Pilha vazia Insere(A)
Avaliação de Expressões
valiação de Expressões valiação de Expressões - Como efetuar o cálculo de uma expressão em um computador? Exemplo: / B C D + E Regras usuais da matemática. Os parênteses alteram a ordem das expressões:
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade
Algoritmos e Estruturas de Dados 2
Algoritmos e Estruturas de Dados 2 Unidade 1: Árvores binárias Rafael Beserra Gomes Universidade Federal do Rio Grande do Norte Material compilado em 21 de fevereiro de 201. Licença desta apresentação:
Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados
Árvores AVL Prof. Othon M. N. Batista Estrutura de Dados Roteiro (/2) Árvore Binária de Pesquisa - Pior Tempo ABP Balanceada e Não Balanceada Balanceamento de Árvores Balanceamento de ABP Balanceamento
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br [email protected]
Árvores. Algoritmos e Estruturas de Dados 2005/2006
Árvores Algoritmos e Estruturas de Dados 2005/2006 Árvores Conjunto de nós e conjunto de arestas que ligam pares de nós Um nó é a raiz Com excepção da raiz, todo o nó está ligado por uma aresta a 1 e 1
Métodos Computacionais. Árvores
Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos
Linguagem C: Árvores Binarias
Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação
Busca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
PROGRAMAÇÃO II 3. FILA DINÂMICA
3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe
Algoritmos e Estrutura de Dados III. Árvores
Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas
PROGRAMAÇÃO II 3. PILHA DINÂMICA
3. PILHA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma pilha é um tipo especial de Pilha na quais todas as inserções e remoções são feitas na primeira posição, que é chamada de topo. Outro nome
INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore
Árvores Binárias e Busca. Jeane Melo
Árvores Binárias e Busca Jeane Melo Roteiro Parte 1 Árvores Relação hierárquica Definição Formal Terminologia Caminhamento em Árvores Binárias Exemplos Parte 2 Busca seqüencial Busca Binária Grafos Conjunto
Estruturas de Dados Pilhas, Filas e Deques
Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11
ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer
INF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
ESTRUTURAS DE DADOS II
ESTRUTURAS DE DADOS II Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Conteúdo Programático 1. Introdução
Complexidade de Algoritmos
Complexidade de Algoritmos Complexidade de Algoritmos Envolvendo Estruturas de Dados Elementares Prof. Osvaldo Luiz de Oliveira Estas anotações devem ser complementadas por apontamentos em aula. Vetor
Árvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Árvores Binárias de Busca
Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes
BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. [email protected]
BC1424 Algoritmos e Estruturas de Dados I Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco [email protected] 1Q-2015 1 2 Árvores Uma árvore é uma estrutura de dados mais geral que uma lista
Figura 13.1: Um exemplo de árvore de diretório.
13. Árvores W. Celes e J. L. Rangel Nos capítulos anteriores examinamos as estruturas de dados que podem ser chamadas de unidimensionais ou lineares, como vetores e listas. A importância dessas estruturas
Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC 5710 - Estruturas de Dados - 2008
MAC 5710 - Estruturas de Dados - 2008 Fila de prioridade Fila de prioridade é uma estrutura de dado que mantém uma coleção de elementos, cada um com uma prioridade associada. Valem as operações seguintes.
DAS5102 Fundamentos da Estrutura da Informação
Árvores Existe uma ampla variedade de dados que são comumente organizados sob a forma de árvores hierárquicas utilizadas recorrentemente em nosso dia a dia. Exemplos são a organização administrativa de
Árvores Binárias Balanceadas
Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos os links vazios
Árvore Binária de Busca
Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore
Estruturas de Dados Árvores
Estruturas de Dados Árvores Prof. Eduardo Alchieri Árvores (introdução) Importância de estruturas unidimensionais ou lineares (vetores e listas) é inegável Porém, estas estruturas não são adequadas para
Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa
Programação Funcional 15 a Aula Árvores de pesquisa Pedro Vasconcelos DCC/FCUP 2014 Árvores binárias Um árvore binária é um grafo dirigido, conexo e acíclico em que cada vértice é de um de dois tipos:
Estruturas de Dados Aula 15: Árvores 17/05/2011
Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo
{ fazer Pós-Ordem sem recursividade. Poderá cair na prova!!! }
1 Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Prof.: José Luiz A. Duizith A B D.. C E. E C Pré: A B C D E B In : B C A E D D Pos: C B E D A A Usando Pilha Procedimento
CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 4) Árvores balanceadas AVL, Rubro-Negras, B-Trees Operações em árvores binárias de busca
Geração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Representação de Algoritmos - Linguagens de Programação
Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve
UFSC-CTC-INE INE5384 - Estruturas de Dados. Árvores. Prof. Ronaldo S. Mello 2002/2. Árvore
US-T-IN IN5384 - struturas de ados Árvores Prof. Ronaldo S. Mello 2002/2 Árvore Uma árvore é uma estrutura que mantém uma relação de hierarquia ou composição entre os dados 1 xemplo João (P) Paulo () na
UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;
UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; e-mail: [email protected] Lista de Exercícios Árvores, Árvores Binárias, Árvores
Estrutura de Dados Árvores. Prof. Robinson Alves
Estrutura de Dados Árvores Prof. Robinson Alves O que é uma árvore Em Computação, é um modelo abstrato de uma estrutura hierárquica Uma árvore consiste de nós com uma relação pai-filho Brasil Vendas Internacional
O modelo do computador
O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década
Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?
Estrutura de um compilador Análise semântica Tradução orientada pela sintaxe 1 2 Análise Semântica Anotação da árvore sintática Análise semântica: Tipos (& Declarações) Escopo Checagens estáticas: Idéia:
Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:
Estruturas de Dados Pilhas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: disponíveis em http://ww3.datastructures.net/ cedidos
2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.
Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Construtor: método executado por uma CLASSE (e não por um objeto, instância da classe)
Estruturas de Dados. Árvores Parte II: O TAD Árvore. EDs & Algoritmos. Operações Genéricas: Operações de Consulta: Operações de Acesso:
Estruturas de Dados Árvores Parte II: EDs & lgoritmos Prof. Ricardo J. G.. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww.datastructures.net (Goodrich
Linguagem de Programação
Linguagem de Programação Aula 10 Arquivos Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Técnico em Informática Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno Persistência
Sintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica [email protected] Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2
Índice i Índice Capítulo 4 Estrutura de Dados não sequencial com armazenamento não sequencial ( Árvore ) 1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2 2. Árvores binárias... 2
Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea
Variáveis Compostas Heterogêneas Variável Composta Heterogênea Conjunto de dados logicamente relacionados, mas de tipos diferentes. Também chamada de registro. Variável Composta Heterogênea 1 Declaração
Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior
Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,
PROG. DE COMPUTADORES II SI Arquivos
1 PROG. DE COMPUTADORES II SI Arquivos Arquivos Permitem que gravemos nossas informações em dispositivos físicos Pendrive HD Estão organizados logicamente em registros Cada registro é similar a um campo
1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição
1 Estrutura de seleção Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição - Necessário quando mais de uma ação deve ser tomada se uma condição for satisfeita
ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti
ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...
Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS
Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS Série : 3 º Período - 1 º Semestre de 2011 Professora : Elzi Ap. Gil 3. LISTAS LINEARES PARTE - III Disciplina - Estrutura de Dados Segundo Pereira(2002),
ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc. [email protected]
ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS Prof. Angelo Augusto Frozza, M.Sc. [email protected] ROTEIRO Variáveis compostas homogêneas Arrays Vetores Matrizes Variáveis compostas heterogêneas Registros
Algumas notas sobre PASCAL
Algumas notas sobre PASCAL PARTE I Anjolina Grisi de Oliveira 1 Um programa em PASCAL Esse texto inclui algumas notas sobre a linguagem PASCAL. As diferenças existentes entre os diversos compiladores não
De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:
PLANO DE ENSINO 1. Identificação Curso: Tecnologia em Desenvolvimento de Software Disciplina: Estrutura de Dados Professor: Msc. Tiago Eugenio de Melo CPF: Regime de Trabalho: 40h CH. Semestral: 100h Siape:
Estruturas de Dados I
UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos [email protected] Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.
Árvores Binárias - continuação
Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Uma Aplicação de Árvores Binárias Árvores Binárias - continuação As árvore binárias são estruturas importantes toda vez que uma
Busca em Espaço de Estados
Busca em Espaço de Estados Jomi Fred Hübner [email protected] FURB / BCC Introdução 2 Agente orientado a meta O projetista não determina um mapeamento entre percepções e ações, mas determina que objetivo
Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller
1 Listas Lineares Dentre as estruturas de dados não primitivas, as listas lineares são as de manipulação mais simples. Uma lista linear agrupa informações referentes a um conjunto de elementos que, de
26/08/2013. Árvore. Árvore. Árvore. Floresta :: Exemplo. Floresta ÁRVORES
2 ÁRVORES Dado um grafo G G é chamado de árvore caso seja não direcionado, conectado e não possua circuitos simples Matemática Discreta Prof. João Paulo Lima Universidade Federal Rural de Pernambuco Departamento
Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi
Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia
Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.
Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações
Compiladores Aula 5. Celso Olivete Júnior. [email protected]
Aula 5 Celso Olivete Júnior [email protected] Na aula passada Conjuntos Primeiro(First) e Seguidor(Follow) 2 Na aula de hoje Análise Sintática Análise Sintática Descendente Recursividade Fatoração 3
JSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Filas COMANDOS EM C++ PARA IMPLEMENTAÇÃO DE UMA FILA. Biblioteca padrão <queue>
Filas Uma fila é uma lista linear em que as inserções são realizadas num extremo, ficando as remoções restritas a outro. palavra da língua inglesa, significa fila. Por tradição, as duas operações básicas
Classificação e Pesquisa de Dados
Classificação e Pesquisa de Dados Aula 20 Árvores B e B+ B-Trees (Árvores B) [Bayer & McCreight 1970] UFRGS INF01124 B-Trees (Árvores B) Árvores de pesquisa balanceadas, projetadas para minimizar o tempo
EAD Árvore - representação usando listas ligadas
4.1. Definição É uma árvore binária em que os seus nodos têm associado uma chave, que - determina a sua posição de colocação na árvore e - obedece às seguintes regras: a chave de um nodo é - maior do que
Resolução de problemas e desenvolvimento de algoritmos
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de
B D. Árvores Ordenadas
ÈUYRUHV 'HILQLomR Uma árvore 7 é um conjunto finito contendo um ou mais nós (vértices), onde existe um nó especial denominado UDL] e os demais estão organizados em 1 conjuntos disjuntos (T 1, T 2,...,
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15
Bases Matemáticas Aula 2 Métodos de Demonstração Rodrigo Hausen v. 2013-7-31 1/15 Como o Conhecimento Matemático é Organizado Definições Definição: um enunciado que descreve o significado de um termo.
Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras
Árvore Binária de Busca Algoritmos e Estrutura de Dados II Árvores Rubro-Negras Prof. Marco Aurélio Stefanes marco em dct.ufms.br Propriedades Se está na subárvore esquerda de então chave() chave() Se
Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.
Árvores Binárias Observação: Material elaborado a partir do material do Professor Marcos Costa. Árvores Binárias Árvore binária é definida como um conjunto finito de nós que Ou está vazio Ou consiste de
- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Fila / Alocação Estática Pag.: 1 - UNIVERSIAE O VALE O RIO OS SINOS IÊNIAS EXATAS E TENOLÓGIAS urso: Informática / iência da omputação Programação II isciplina: Linguagem de
Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas
Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar
Algoritmos e Estrutura de Dados II. Apresentação. Prof a Karina Oliveira. [email protected]
Algoritmos e Estrutura de Dados II Apresentação Prof a Karina Oliveira [email protected] Ementa Proporcionar ao aluno conhecimento teórico e prático para seleção, construção e manipulação de estrutura
Árvores Binárias de Pesquisa. Programação II Prof. Mateus Raeder. Árvores Binárias de Pesquisa. Árvores Binárias de Pesquisa. Classe Nodo Binário
Programação II Conhecida também como: Árvore binária ordenada Árvore binária de busca Aresenta relação de ordem entre os nodos Ordem definida através do camo chamado chave CHAVE Prof. Mateus Raeder Chaves
Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário
Filas Fila é um tipo de lista linear onde as inserções são realizadas num extremo (final da Fila) e as remoções restritas ao outro (começo da Fila). O primeiro a entrar é o primeiro a sair e último a entrar
Árvores Balanceadas. Árvore binária completamente balanceada. Ocorre quando a árvore está cheia ou quase cheia com o nível n-1 completo
Árvores Balanceadas As árvores binárias de pesquisa são, em alguns casos, pouco recomendáveis para as operações básicas (inserção, remoção e busca) Árvores binárias de pesquisa degeneradas tornam as operações
Métodos de Pesquisa em Memória Primária
Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno [email protected] / [email protected] Pesquisa Por pesquisa (procura ou busca) entende-se o ato
Linguagem algorítmica: Portugol
Programação de Computadores I Aula 03 Linguagem algorítmica: Portugol José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/34 Introdução I Lógica A lógica é usada
Programando Jogos com Delphi (LÓGICA, ANIMAÇÃO, CONTROLE) Autor: Antônio Sérgio de Sousa Vieira Email: [email protected]
Programando Jogos com Delphi (LÓGICA, ANIMAÇÃO, CONTROLE) Autor: Antônio Sérgio de Sousa Vieira Email: [email protected] Introdução Este texto foi escrito para pessoas que se interessam pela arte
Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão [email protected]
Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão [email protected] Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão
Manipulação de Arquivos em Pascal
Manipulação de Arquivos em Pascal Estrutura de Dados II Aula 03 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox 1 Para implementar programa infantil para ordenação (alfabética) de
MÉTODOS DE ORDENAÇÃO
UNIÃO DE TECNOLOGIA E ESCOLAS DE SANTA CATARINA Tecnologia em Processamento de Dados MÉTODOS DE ORDENAÇÃO Tecnologia em Processamento de Dados (Pascal) Jurandir Steffens Acadêmico Glauco Vinicius Scheffel
