Estrutura de Dados e Algoritmos e Programação e Computadores II

Slides:



Advertisements
Apresentações semelhantes
Antonio Dirceu Rabelo de Vasconcelos Filho
Advertisements

Árvores Passeios.
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Inteligência Artificial
Marco Antonio Montebello Júnior
Estrutura de Dados (Linguagem C / C++)
Exercícios PAA- Grafos
Estruturas de Dados Árvores Binárias
Pesquisa em profundidade
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Série de Exercícios.
Árvores.

Arquivos Seqüenciais Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti 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
Pesquisa em Memória Primária – Árvores de Busca
SEMINÁRIO DE ALGORITMOS
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Implementação de um mapa através de uma Árvore Binária de Busca
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
CAP-223 Árvore através de uma Árvore Binária A BCDE FGHIJK A BC D E FGHIJK.
Inteligência Artificial
Robson Godoi / Sandra Siebra
Prof. Ernesto Lindstaedt
Árvore Geradora Mínima
Árvore Binária de Busca
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Algoritmos em Grafos.
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Grafos Árvores Geradoras.
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Exercícios PAA- Grafos
Resolução de problemas por meio de busca
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Introdução e Busca Cega
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Á R V O R E S.
Árvore Binária de Busca
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Inteligência Artificial
Transparências da profa. Renata Galante da II/UFRGS com permissão
Conceito de Árvores – Árvores Binárias

Á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.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
Análise e Síntese de Algoritmos
Introdução a Árvores e Árvores Binárias
Prof. Daniel Morais dos Reis
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
Árvores e Árvores Binárias
Árvores Estrutura de dados que se caracteriza por uma relação de
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.
INE5408 Estruturas de Dados Árvores B - Estrutura e peculiaridades -Algoritmos de inserção, pesquisa e deleção.
Transcrição da apresentação:

Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 7: Árvores

Árvores Conceitos e terminologia Árvores binárias Árvores-B Inclusão e Exclusão Introdução aos grafos

Árvores As listas ligadas usualmente fornecem maior flexibilidade do que as matrizes, mas são estruturas lineares e é difícil usá-las para organizar uma representação hierárquica de objectos. Pilhas e Filas limitam-se a somente uma dimensão. A árvore consiste de nós e arcos, que ao inverso das árvores naturais são representadas de cima para baixo, com a raiz no topo e as folhas na base.

Árvores A raiz é um nó que não possui ancestrais; ele só possui nós filhos. As folhas não possuem nós filhos, ou seus filhos são estruturas vazias. Exemplo:

Árvores Mais exemplos:

Árvores Cada nó tem que ser atingível a partir da raiz através de uma sequência única de arcos, chamada de caminho. O número de arco de um caminho é chamado de comprimento do caminho. O nível de um nó é o comprimento do caminho da raiz ao nó mais 1, que é o número de nós no caminho. A altura de uma árvore não vazia é o nível máximo de um nó na árvore.

Árvores O número de filhos permitido por nó e as informações armazenadas em cada nó diferenciam os diversos tipos de árvores existentes. Exemplo: na árvore da expressão (3+6)*(4-1)+5 os nós folhas possuem valores e os nós intermediários possuem operações

Árvores O número de filhos de um nó é chamado grau de saída desse nó. Um nó folha é aquele com grau de saída nulo, ou também nó terminal. Um nó que não é folha (isto é, possui grau de saída diferente de zero) é chamado nó interior ou nó interno, ou também nó não-terminal. O grau de uma árvore é o máximo entre os graus de seus nós. Uma floresta é um conjunto de zero ou mais árvores.

Percurso em Árvores O percurso em árvores é o processo de visitar cada nó da árvore exactamente uma vez. O percurso pode ser interpretado como colocar todos os nós em uma linha. Mas qual a ordem? Existem n! percursos diferentes, quase todos caóticos. Os básicos são percurso em profundidade e percurso em extensão (largura).

Percurso em Árvores Um percurso em extensão é visitar cada nó começando do menor nível e move-se para os níveis mais altos nível após nível, visitando cada nó da esquerda para a direita. Sua implementação é directa quando uma fila é utilizada. Depois que um nó é visitado, seus filhos, se houver algum, são colocados no final da fila e o nó no início da fila é visitado. Assim, os nós do nível n+1 serão visitados somente depois de ter visitados todos os nós do nível n.

Percurso em Árvores Breadth - First Search (BFS) Fila: 13 13 10 25 Fila: 2, 12, 20, 31 Fila: 12, 20, 31 2 12 20 31 Fila: 20, 31 Fila: 31 29 Fila: 29 Percurso: 13, 10, 25, 2, 12, 20, 31, 29

Percurso em Árvores O percurso em profundidade prossegue tanto quanto possível à esquerda (ou direita), então se move para trás até a primeira encruzilhada, vai um passo para a direita (ou esquerda) e novamente, tanto quanto possível, para a esquerda (ou direita). Repete-se este processo até que todos os nós sejam visitados.

Percurso em Árvores Depth - First Search (DFS) V – Visitar um nó L – Percorrer à esquerda R – Percorrer à direita VLR VRL LVR RVL LRV RLV 13 10 25 2 12 20 31 29

Percurso em Árvores

Árvores Binárias Uma árvore binária é uma árvore cujos nós têm 2 filhos (possivelmente vazios) e cada filho é designado como filho à esquerda ou filho à direita. O número de folhas é uma importante característica das árvores binárias para mensurar uma eficiência esperada de algoritmos. Uma árvore binária é conhecida como completa se todos os nós em todos os níveis, excepto o último, tiverem 2 filhos.

Árvores Binárias Assim haveria, 20 = 1 nós no nível 1, 21 = 2 nós no nível 2, 22 = 4 nós no nível 3 e, na forma geral, 2i nós no nível i+1. Para todas as árvores binárias não-vazias cujos nós terminais tenham exactamente 2 filhos não-vazios, o número de folhas m será o número de nós não-terminais k mais 1. (m = k + 1) Se uma árvore tem somente uma raiz, essa observação é trivialmente válida.

Árvores Binárias Se ela for válida para uma certa árvore, então, depois de anexar 2 folhas a uma das folhas já existentes, essa folha se torna um nó não-terminal (m é subtraído de 1 e k é adicionado de 1). No entanto, 2 novas folhas são enxertadas na árvore (m é adicionado de 2).

Árvores Binárias k nós não-terminais k+1 nós não-terminais m folhas

Árvores Binárias de Busca Para cada nó da árvore, todos os valores armazenados em sua sub-árvore à esquerda são menores que o valor armazenado no próprio nó, e todos os valores armazenados na sub-árvore à direita são maiores que o próprio nó. K 13 10 25 A P 2 12 20 31 N R 29

Árvores Binárias de Busca Um algoritmo para localizar um elemento nessa árvore é bastante directo. Para cada nó, compare a chave com o valor armazenado no nó correntemente apontado. Se for menor, vá para a sub-árvore à esquerda. Se for maior, vá para a sub-árvore à direita. Se for a mesma, a busca chegou ao fim. Se não houver como continuar, a chave não está na árvore.

Percurso em Árvores Binárias void BreadthFirst() { Queue q; Node *p = root; if (p != 0) { q.enqueue(p); while (!q.empty()){ p = q.dequeue(); visit(p); if (p->left != 0) q.enqueue(p->left); if (p->right != 0) q.enqueue(p->right); }

Percurso em Árvores Binárias void inorder(Node *p) { if (p != 0) { inorder(p->left); visit(p); inorder(p->right); } void preorder(Node *p) { preorder(p->left); preorder(p->right); void postorder(Node *p) { if (p != 0) { postorder(p->left); postorder(p->right); visit(p); }

Árvores Binárias de Busca Como será a inserção em uma árvore binária de busca? E como será a remoção em uma árvore binária de busca? No nó folha? No nó raiz? No nó intermediário?