Вы находитесь на странице: 1из 93

ESTRUTURAS DE DADOS II

MSc. Daniele Carvalho Oliveira

Regra do Jogo
3 provas Trabalho Presena Material
no suficiente presena Ateno! Anotao! Perguntas!

ED2: MSc. Daniele Oliveira

Avaliaes
3 Provas:
1 Prova (20pts) 14/09 2 Prova (20pts) 05/10 3 Prova (20pts) - 16/11

ED2: MSc. Daniele Oliveira

Trabalhos
Individual ou em Dupla
Trabalho Prtico Seminrios

1 Momento 10pts 2 Momento 30pts

ED2: MSc. Daniele Oliveira

Datas Importantes
Trabalho Prtico
Definio do Tema 17/08 Implementao do Programa Base: 31/08 Implementao dos Mtodos de Pesquisa de Dados: 14/09 Insertion Sort - 21/09 Shell Sort 21/09 Bubble Sort 28/09 Quick Sort 28/09

ED2: MSc. Daniele Oliveira

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
6

ED2: MSc. Daniele Oliveira

Aula 1

REVISO

ED2: MSc. Daniele Oliveira

Tipos de Dados
Conjunto de valores que uma constante ou varivel pode assumir
Tipos Primitivos: nmeros, valores lgicos, caracteres; comuns na maioria das linguagens
int, float, char, boolean...

Tipos Abstratos de Dados:


Conjunto de valores Operaes que so efetuadas sobre esses valores

ED2: MSc. Daniele Oliveira

Por que estudar Estruturas de Dados?


Identificar e desenvolver modelos matemticos, determinando classes de problemas que podem ser resolvidos com o uso delas. Criar representaes concretas de objetos e desenvolver rotinas capazes de atuar sobre estas representaes, de acordo com o modelo considerado.

ED2: MSc. Daniele Oliveira

Estruturas de Dados
Homogneas
Permite agrupar diversas informaes dentro de uma mesma varivel. Este agrupamento dever obedecer sempre ao mesmo tipo de dado. Matrizes de uma Dimenso (Unidimensionais) ou Vetores
Os elementos de um vetor so acessados por meio de ndices de valor inteiro
Pascal o 1 Elemento corresponde ao ndice 1 Java, C o 1 Elemento corresponde ao ndice 0

No possvel operar diretamente sobre um vetor como um todo, mas apenas sobre seus componentes. * Tem grande aplicao na pesquisa e classificao de dados.

ED2: MSc. Daniele Oliveira

10

Estruturas de Dados Homogneas


Matrizes com mais de uma dimenso
Definida por uma nica varivel de dimenso de determinado tamanho > 1
Em Java no existe matrizes multidimensionais, existe vetores de vetores.

Do mesmo modo que em matrizes unidimensionais, no possvel operar sobre a matriz como um todo, apenas sobre seus componentes.

Estruturas de Dados Heterogneas


uma estrutura composta por um conjunto de variveis de tipos diferentes, logicamente relacionados. O tipo mais comum o registro.

ED2: MSc. Daniele Oliveira

11

Listas
Uma Lista Linear uma coleo, cuja propriedade estrutural baseiase apenas na posio relativa dos elementos.
Operaes possveis:
Acessar qualquer elemento da lista Remover um elemento de uma posio especfica da lista Combinar duas listas em uma Dividir uma lista em duas Obter cpias de uma lista Determinar o total de elementos de uma lista Ordenar os elementos de uma lista Buscar elementos na lista...

ED2: MSc. Daniele Oliveira

12

Listas
Tipos especiais de listas (considerando as operaes de: insero, remoo e acesso)
Pilha: LIFO todas as inseres, remoes e acessos so realizados em um nico extremo. Fila: FIFO todas as inseres so feitas em um extremo e todas as remoes e acessos no outro extremo Fila dupla: as inseres, remoes e acessos podem ser realizados em qualquer extremo.

ED2: MSc. Daniele Oliveira

13

Listas
Forma de alocao de memria: como armazenar os elementos da lista?
Sequencial Esttica Dinmica Esttica Sequencial Dinmica Sequencial Encadeada Esttica Encadeada Dinmica Encadeada

Esttica = a quantidade total de memria a ser usada pelos dados deve ser previamente conhecida, definida de modo imutvel. Dinmica = se o programa capaz de criar novas variveis enquanto executa, ento a alocao dinmica

ED2: MSc. Daniele Oliveira

14

Listas
Sequencial = A forma mais natural de armazenar uma lista dentro do computados consiste em colocar seus elementos em clulas de memria consecutivas, um aps o outro.
Vantagem Acesso Desvantagem Insero e remoo de itens no meio da lista

Encadeada = Os elementos da lista podem ser armazenados em qualquer lugar, no necessariamente de forma consecutiva. Para manter a ordem linear cada elemento tem junto o endereo do prximo elemento.
Vantagem Insero e remoo de itens no meio da lista Desvantagem Acesso
ED2: MSc. Daniele Oliveira

15

Pilhas
A pilha uma das estruturas de dados mais til em computao. um tipo especial de lista linear em que todas as operaes de insero e remoo so realizadas em uma mesma extremidade, o topo. Operaes bsicas:
Top acessa o elemento do topo da pilha Push insere um elemento no topo da pilha Pop retira um elemento do topo da pilha
16

ED2: MSc. Daniele Oliveira

Pilhas
Pode-se utilizar o esquema de alocao esttica sequencial de memria, tendo:
Um vetor, para armazenar os elementos

Um ndice, para indicar a posio do topo da pilha

ED2: MSc. Daniele Oliveira

17

Filas
A fila um tipo especial de lista linear em que as inseres so realizadas em um dos extremos (o final da fila) e as remoes restritas ao outro extremo (o comeo da fila) Operaes bsicas
Enqueue insere um elemento no final da fila Dequeue remove um elemento do comeo da fila

ED2: MSc. Daniele Oliveira

18

Filas
possvel implementar uma fila sequencial tendo 3 recursos bsicos:
Um vetor, para armazenar os elementos Uma varivel, para referenciar o primeiro elemento Uma varivel, para referenciar a primeira posio livre aps o ltimo elemento da fila

ED2: MSc. Daniele Oliveira

19

Fila Sequencial

ED2: MSc. Daniele Oliveira

20

Fila Circular

ED2: MSc. Daniele Oliveira

21

Fila Circular
possvel implementar uma fila circular tendo 4 recursos bsicos:
Um vetor, para armazenar os elementos Uma varivel, para referenciar o primeiro elemento Uma varivel, para referenciar a primeira posio livre aps o ltimo elemento Um indicador da quantidade de elementos da fila

ED2: MSc. Daniele Oliveira

22

Fim da Reviso

PESQUISA DE DADOS

ED2: MSc. Daniele Oliveira

23

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
24

ED2: MSc. Daniele Oliveira

Pesquisa de Dados
Uma das tarefas de maior importncia na computao a pesquisa de informaes contidas em colees de dados Existem 2 tipos bsicos de Busca:
Pesquisa Sequencial Pesquisa Binria

ED2: MSc. Daniele Oliveira

25

Pesquisa Sequencial
Tipo mais simples de busca. Pode ser aplicado em uma coleo de dados ordenadas ou no ordenadas. Consiste em pesquisar um valor x, num vetor L inspecionando em sequencia as posies de L a partir da primeira posio.
Se encontrarmos x, a busca tem sucesso Se alcanarmos a ltima posio de L sem encontrar x, conclumos que x no ocorre no vetor L.

Para colees de dados de mdio ou grande porte o tempo gasto para realizar a pesquisa torna invivel este mtodo.
ED2: MSc. Daniele Oliveira

26

Pesquisa Binria
Para ser aplicado a coleo de dados deve estar previamente ordenada. Supondo que o vetor est ordenado crescentemente:
Inspecionamos a posio central de L Se ela contem o valor x que queremos localizar, a busca para com sucesso Caso contrrio
Se x for menor do que o elemento central passamos a procurar x, recursivamente, no elemento central da primeira metade do vetor. Se x for maior do que o elemento central, passamos a procurar x, recursivamente, no elemento centrar da segunda metade do vetos. Se o intervalo se tornar vazio, a busca para, tendo sido mal sucedida.

ED2: MSc. Daniele Oliveira

27

CLASSIFICAO DE DADOS

ED2: MSc. Daniele Oliveira

28

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
29

ED2: MSc. Daniele Oliveira

Classificao de Dados
Classificao de Dados o processo pelo qual se organizam itens em ordem (de)crescente segundo algum critrio .
(Ordenao Sorting)

Na prtica, os itens a serem ordenados raramente so valores isolados. Em geral, cada um deles faz parte de uma coleo de dados chamada registro. Ordenar nmeros individuais ou grandes registros que contm nmeros irrelevante para o mtodo de ordenao.

ED2: MSc. Daniele Oliveira

30

Classificao de Dados
Temos dois tipos de classificao:
Classificao Interna
Realiza a classificao apenas nos dados que se encontram na memria principal Gasta menos tempo de acesso para buscar O tempo mdio de acesso no afetado pela sequncia dos dados

Classificao Externa
Os dados so transferidos em blocos para a memria principal. S ento so manipulados A transferncia dos dados influencia no tempo gasto para o processamento Os dados so manipulados bloco a bloco Mtodos de classificao externa envolvem a aplicao de mtodos de classificao interna, aplicando em um subconjunto de dados de cada vez
ED2: MSc. Daniele Oliveira

31

Mtodos de Classificao Interna


Os mtodos de Classificao interna so divididos em cinco grupos de acordo com a tcnica empregada:
1. 2. 3. Classificao por Insero
Insertion Sort, Shell Sort

Classificao por Troca Classificao por Seleo

Bubble Sort, Quick Sort Selection Sort, Heap Sort

4. Classificao por Distribuio


Bucket Sort, Radix Sort

5.

Classificao por Intercalao

Merge Sort

ED2: MSc. Daniele Oliveira

32

Fim da Aula 1

PRXIMA AULA: CLASSIFICAO POR INSERO

ED2: MSc. Daniele Oliveira

33

ESTRUTURAS DE DADOS II
MSc. Daniele Carvalho Oliveira

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
2

ED2: MSc. Daniele Oliveira

Aula 2

CLASSIFICAO POR INSERO

ED2: MSc. Daniele Oliveira

Classificao por Insero


A Classificao por insero caracterizada pelo principio no qual dados a serem ordenados so divididos em dois segmentos: um j ordenado e outro a ser ordenado. Os mtodos mais conhecidos de Classificao por Insero so:
Insertion Sort Shell Sort

ED2: MSc. Daniele Oliveira

Insertion Sort

ED2: MSc. Daniele Oliveira

Insertion Sort
Dividimos os elementos a serem ordenados em 2 grupos
O primeiro grupo, contendo apenas o primeiro elemento (Segmento ordenado) O segundo grupo, contendo os demais n-1 elementos (Segmento no ordenado)

O Processo de ordenao se desenvolve em n 1 interaes


Em cada iterao um elemento do segmento no ordenado transferido para o segmento ordenado, em sua posio correta.

ED2: MSc. Daniele Oliveira

Como?
Compara-se o elemento a ser ordenado com cada um dos elementos ordenados, sequencialmente. Considerando:
O elemento a ser inserido menor do que aquele com que se est comparando
Este movido para a prxima posio

O elemento a ser inserido maior ou igual do que aquele com que se est comparando
Deixamos o elemento na sua posio

ED2: MSc. Daniele Oliveira

Desempenho
O desempenho do mtodo de classificao por insero fortemente influenciado pela ordem inicial dos nmeros a serem ordenados. Alm de depender tambm da quantidade de nmeros a serem ordenados. A situao mais desfavorvel para o mtodo aquela em que o vetor a ser ordenado se apresenta na ordem contrria desejada. Por outro lado, o melhor caso para o mtodo aquele no qual as chaves j se apresentam previamente ordenadas. Isso significa que nenhuma transposio necessria.
ED2: MSc. Daniele Oliveira

Shell Sort
uma extenso do mtodo de insero direta (Insertion Sort) Realiza classificaes parciais do vetor a cada iterao, favorecendo o desempenho dos passos seguintes. Utilizando o incremento de shell, o algoritmo compara elementos distantes em um vetor, em vez de comparar os adjacentes.

ED2: MSc. Daniele Oliveira

O vetor [] dividido em segmentos. Cada um dos segmentos classificado por insero direta, separadamente. No ltimo passo: = 1. Vetor ordenado.

Como Funciona?

ED2: MSc. Daniele Oliveira

10

Como escolher valores para h?


A sequncia de valores que deixa o Shell Sort mais eficinte a sequncia de Donald Knuth.
= 3 + 1 1, 4, 13, 40, 121, 364, ...

ED2: MSc. Daniele Oliveira

11

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
12

ED2: MSc. Daniele Oliveira

CLASSIFICAO POR TROCA

ED2: MSc. Daniele Oliveira

13

Classificao por Troca


Na Classificao por troca a classificao de um vetor feita atravs de comparaes entre os elementos e trocas sucessivas desses elementos.

Os mtodos mais conhecidos de Classificao por Insero so:


Bubble Sort Quick Sort

ED2: MSc. Daniele Oliveira

14

Buble Sort
O Bubble Sort se baseia em trocas de valores entre posies consecutivas, levando os valores mais altos (ou mais baixos) para o final do arquivo. O Bubble Sort o mtodo que tem a implementao mais simples, por isso muito utilizado.

ED2: MSc. Daniele Oliveira

15

Desempenho
Melhor caso: aquele no qual as chaves j se encontram ordenadas Pior caso: ordem inversa.

ED2: MSc. Daniele Oliveira

16

Quick Sort
O Quick Sort se baseia no paradigma de dividir e conquistar:
Dividir o problema em um determinado nmero de subproblemas Conquistar os subproblemas, resolvendo-os recursivamente. Combinar as solues dadas aos subproblemas, a fim de formar a soluo para o problema original.

ED2: MSc. Daniele Oliveira

17

Como funciona?
O particionamento dos nmeros feito atravs da escolha de um determinado elemento, chamado piv, e em seguida todos os elementos menores que o piv ficam a sua esquerda, enquanto que os maiores ficam do seu lado direito. O processo continua de forma recursiva, ordenando-se os subvetores particionados dos lados esquerdo e direito. A escolha do piv pode ser definida usando uma estratgia, como por exemplo, o primeiro elemento do vetor, o ltimo, o mediano, etc.
ED2: MSc. Daniele Oliveira

18

Preparao
1.
1. 1. 2.

Escolha o Piv
Armazene o valor em uma varivel x i no primeiro elemento j no ltimo elemento

2. 2 apontadores

ED2: MSc. Daniele Oliveira

19

Execuo
1. Incrementa i at encontrar um elemento maior ou igual ao piv 2. Decrementa j at encontrar um elemento menor ou igual ao piv
1. 2.
1.

Se a posio de j for maior que a posio de i, trocamos seus valores (volta a 1) Se a posio de j for menor ou igual que a posio de i, separamos o vetor em (Inicio do Vetor at j-1) e (i+1 at o Fim do Vetor).
Reinicia o processo.

ED2: MSc. Daniele Oliveira

20

ED2: MSc. Daniele Oliveira

21

ED2: MSc. Daniele Oliveira

22

Fim da Aula 2

PRXIMA AULA: CLASSIFICAO POR SELEO

ED2: MSc. Daniele Oliveira

23

ESTRUTURAS DE DADOS II
MSc. Daniele Carvalho Oliveira

Contedo Programtico

1. 2. 3.
1. 2. 3.

Reviso de Estruturas de Dados I Pesquisa de Dados Classificao de Dados


Por Insero Por Troca Por Seleo

4.
1. 2. 3. 4. 5.

rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento

5.
1. 2. 3.

Classificao de Dados
Por Seleo Por Distribuio Por Intercalao

6. 7.

Grafos Hash
2

ED2: MSc. Daniele Oliveira

Aula 2

CLASSIFICAO POR SELEO

ED2: MSc. Daniele Oliveira

Classificao por Seleo


Com esse tipo de ordenao a sequncia ordenada construda com um elemento de cada vez, que ser adicionado na sequncia na sua ordem correta. A cada passo, o elemento a ser ordenado selecionado dos elementos restantes. So sempre inseridos em uma extremidade. Mtodos de Classificao por Seleo
Selection Sort Heap Sort

ED2: MSc. Daniele Oliveira

Selection Sort
A cada passo do algoritmo, feita uma Busca Linear (Sequencial) nos elementos no ordenados para encontrar o menor (maior) elemento. Ele , ento, colocado na sua posio correta.

ED2: MSc. Daniele Oliveira

SEMINRIOS

ED2: MSc. Daniele Oliveira

Seminrios
Equipe
Mximo 6 alunos

Definio do Grupo e do Tema


24/08

ED2: MSc. Daniele Oliveira

Seminrios
Valor - 10 pts Artigo - peso 1
Formato Normas ABNT Contedo

Apresentao peso 2
Avaliao Individual Presena Obrigatria em todas as apresentaes

ED2: MSc. Daniele Oliveira

Artigo
Elaborar um Artigo: Introduo Conceitos Exemplos Consideraes Finais Referncias Data de Entrega:
16/11

Compiladores: Msc. Daniele C. Oliveira

Apresentao
Data de Apresentao (Sorteio)
23/11 30/11 07/12 14/12

Tempo de Apresentao
30 minutos a 40 minutos

Compiladores: Msc. Daniele C. Oliveira

10

Apresentao
Ser avaliado:
O uso do tempo (30-40m) foi adequado? Houve organizao e planejamento da apresentao? Os recursos didticos (imagens textos, slides..) foram usados de maneira correta? A apresentao foi clara e objetiva? O aluno demonstrou conhecimento sobre o assunto abordado? Total 1 1 1 3 4 10

Compiladores: Msc. Daniele C. Oliveira

11

Temas
Processamento de Linguagem Natural Linguagem Go! Web Semntica e Ontologias Computao Pervasiva Reconhecimento de Informao Linhas de Produto de Software Sistemas de Informao Geogrfica

Compiladores: Msc. Daniele C. Oliveira

12

RVORE

ED2: MSc. Daniele Oliveira

13

Introduo
Filas, pilhas Estruturas Lineares Um dos exemplos mais significativos de estruturas no-lineares so as rvores. Muito utilizadas para representar uma hierarquia.

ED2: MSc. Daniele Oliveira

14

Definio
Uma rvore T um conjunto finito, no-vazio de ns, = 1 2 , com as seguintes propriedades:
1. 2.

Um n especial, r, chamado de raiz da rvore; O restante dos ns particionado em 0 subconjuntos, cada um sendo uma rvore.

ED2: MSc. Daniele Oliveira

15

Exemplos
= {} uma rvore

= {, } uma rvore

= , , , , , , , ,

uma rvore

ED2: MSc. Daniele Oliveira

16

Terminologia
Considere uma rvore = {, 1 , 2 , , }, 0
O grau de um n o nmero de sub-rvores relacionadas com aquele n. Um n de grau 0 no possui sub-rvores. Esse n chamado de folha. Cada raiz da sub-rvore chamada de filho de . O termo neto definido de forma anloga. O n raiz da rvore o pai de todas as razes das sub-rvores , 1 < Duas razes e das sub-rvores distintas e de so ditas irms

ED2: MSc. Daniele Oliveira

17

Caminho e Comprimento de Caminho


Dada uma rvore que contm um conjunto de ns S, um caminho P definido como uma sequncia no vazia de ns.
Onde , 1 , tal que o pai de +1 O comprimento do caminho 1.

= { 1 , 2 , , }

ED2: MSc. Daniele Oliveira

18

Caminho e Comprimento de Caminho


O nvel ou profundidade de um n o comprimento do nico caminho entre a raiz e o n. A altura de um n o comprimento do caminho mais longo do n a uma folha. A altura de uma rvore a altura do n raiz Uma rvore homognea se todos os seus ns possuem as mesmas caractersticas de contedo. Caso contrrio heterognea. Para conhecermos os antepassados de um n, basta identificarmos todos os ns ao longo do caminho entre a raiz e o n. Um n descendente de um n se h um caminho em de a .
ED2: MSc. Daniele Oliveira

19

rvores n-rias
Uma rvore N-ria T um conjunto finito de ns com as seguintes propriedades:
1. 2. O conjunto vazio, = ; ou O conjunto consiste em uma raiz, , e rvores N-rias distintas

Ou seja, os ns de uma rvore N-ria possuem grau 0 a N.

ED2: MSc. Daniele Oliveira

20

rvores N-rias Cheias


Uma rvore N-ria T dita cheia quando seus ns possuem grau 0 ou N.

ED2: MSc. Daniele Oliveira

21

RVORES BINRIAS

ED2: MSc. Daniele Oliveira

22

rvores Binrias
Uma rvore binria se caracteriza pelo fato de todos os seus ns terem no mximo duas sub-rvores, ou seja, uma rvore de grau 2. Toda rvore binria possui as seguintes propriedades:
1. 2. 3. Cada sub-rvore tambm uma rvore binria. O grau de um n representa o seu nmero de sub-rvores. Em uma rvore binria, o grau mximo de um n 2.

Referimo-nos aos filhos de um n em uma rvore binria como sendo sub-rvore esquerda ou subrvore direita, de acordo com seu posicionamento.
ED2: MSc. Daniele Oliveira

23

RVORES BINRIAS DE PESQUISA

ED2: MSc. Daniele Oliveira

24

rvores Binrias de Pesquisa (ABP)


Tambm chamada de rvore Binria de Busca Toda rvore Binria de Pesquisa possui as seguintes propriedades:
Todos os ns da sub-rvore direita so maiores que o n raiz Todos os ns da sub-rvore esquerda so menores que o n raiz Cada sub-rvore tambm uma rvore binria de pesquisa.

ED2: MSc. Daniele Oliveira

25

Insero em ABP
Aps a insero do novo elemento, a rvore deve manter as propriedades de rvore binria de pesquisa. O n inserido sempre uma folha.

ED2: MSc. Daniele Oliveira

26

Remoo em ABP
3 casos
1. 2. 3. O n a ser removido uma folha O n a ser removido possui apenas um filho O n a ser removido possui dois filhos

ED2: MSc. Daniele Oliveira

27

Percurso em rvores
Um percurso numa rvore binria uma forma sistemtica de acesso a todos os seus ns, em geral realizando algum tipo de operao. Duas categorias de percurso:
Percurso em profundidade os ns da sub-rvore atual tm prioridade na ordem de acesso. Percurso em largura os ns de menor nvel tm prioridade na ordem de acesso.

ED2: MSc. Daniele Oliveira

28

Percurso em Profundidade
Trs tipos cannicos:
Pr-ordem:
Visitar a raiz Percorrer a sub-rvore esquerda em pr-ordem Percorrer a sub-rvore direita em pr-ordem

Ps-ordem:
Percorrer a sub-rvore esquerda em ps-ordem Percorrer a sub-rvore direita em ps-ordem Visitar a raiz

In-ordem (simtrica):
Percorrer a sub-rvore esquerda em ordem simtrica Visitar a raiz Percorrer a sub-rvore direita em ordem simtrica
ED2: MSc. Daniele Oliveira

29

Percurso em Largura
O percurso em largura primeiro visita todos os ns do nvel 0, depois todos os ns do nvel um, e da por diante. Os ns so visitados da esquerda para a direita em cada um dos nveis.

ED2: MSc. Daniele Oliveira

30

rvores de Expresses
Expresses algbricas como / + possuem inerentemente uma estrutura de rvore. Os ns terminais de uma rvore de expresso so variveis ou constantes da expresso. Os outros ns de uma rvore so operadores (+, ,,). Os parnteses no aparecem na rvore. A representao em rvore mantm a inteno dos parnteses. rvores de Expresso so geralmente binrias, por que? Os operadores algbricos mais comuns so binrios ou unrios.

ED2: MSc. Daniele Oliveira

31

Percurso
O que podemos fazer com rvores de expresso? Imprimir a expresso representada na rvore. Um percurso em ordem simtrica visita os ns na ordem: ,, , +, , , ,, Considere um percurso em ordem simtrica que, quando encontra um n terminal, o imprime; e quando encontra um n no terminal faz:
1. 2. 3. 4. 5. Imprime um parntese esquerdo; Percorre a sub-rvore da esquerda; Imprime a raiz; Percorre a sub-rvore da direita; e Imprime um parntese direito.

Sada: ( +

ED2: MSc. Daniele Oliveira

32

Notao Infixa
A notao dos exemplos anteriores chamada de notao infixa, porque cada operador aparece entre seus operandos. Existe uma relao natural entre a notao infixa e o percurso em ordem simtrica. S possvel para operaes binrias (soma, diviso...)

ED2: MSc. Daniele Oliveira

33

Notao Prefixa
O operador escruto antes dos seus operandos. Utiliza-se um percurso em pr-ordem para imprimir a expresso. Para cada n no terminal:
1. 2. 3. 4. 5. 6. Imprime a raiz; Imprime um parntese esquerdo; Percorre a sub-rvore esquerda; Imprime uma vrgula; Percorre a sub-rvore da direita; e Imprime um parntese direito.

Sada: + ( , , , , ) ( , , , , )
ED2: MSc. Daniele Oliveira

34

Notao Posfixa
O percurso em ps-ordem produz uma expresso posfixa. Em uma expresso posfixa o operador vem depois dos operandos. A vantagem das expresses posfixas (e prefixas) que parnteses no so necessrios. Aplicando um percurso em ps-ordem, temos: +

ED2: MSc. Daniele Oliveira

35

Notao Posfixa
Uma expresso posfixa pode ser avaliada usando uma pilha de avaliao durante o percurso, da seguinte forma:
1. 2.
a) b) c)

Quando um n terminal for visitado, seu valor colocado na pilha Quando um n no terminal for visitado:
So retirados dois valores da pilha A operao especificada pelo n feita com os dois valores O resultado colocado na pilha.

3.

Quando o percurso terminar, existir apenas um valor na pilha, que corresponder ao valor da expresso.

Agora, em vez de fazer a computao de cada n que for visitado, emite-se o cdigo requerido para avaliar a expresso. Isso exatamente o que um compilador faz para compilar uma expresso.
ED2: MSc. Daniele Oliveira

36

Fim da Aula 2

PRXIMA AULA: BALANCEAMENTO DE RVORES

ED2: MSc. Daniele Oliveira

37