Árvores e Árvores binárias. roteiro contextualização Árvores Árvores binárias

39
Árvores e Árvores Binárias

Upload: nathalia-franco-felgueiras

Post on 07-Apr-2016

251 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores e Árvores Binárias

Page 2: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Roteiro Contextualização

Árvores

Árvores Binárias

Page 3: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Contextualização Importância de estruturas unidimensionais ou

lineares (vetores e listas) é inegável.

Contudo, elas não são adequadas para representar dados que devem ser dispostos de maneira hierárquica.

Por exemplo, diretórios criados em um computador.

Page 4: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Roteiro Contextualização

Árvores

Árvores Binárias

Page 5: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores - Introdução Em computação, uma árvore é um modelo

abstrato de uma estrutura hierárquica; Trata-se de uma estrutura não-linear

constituída de nós com relações de parentesco (pai-filho);

Aplicações: S.O.s (arquivos). Linguagens (O.O.). etc

Page 6: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores - Introdução Árvores são adequadas para representar

estruturas hierárquicas não lineares, como relações de descendência pai, filhos, irmãos, etc.

Forma mais natural de definirmos uma estrutura de árvore é usando recursividade.

Page 7: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores - Definições Uma árvore é composta de um conjunto finito de

nós.

Desse conjunto, há um nó r denominado de raiz, que contém zero ou mais sub-árvores, cujas raízes são ligadas diretamente a r.

Esses nós raízes das sub-árvores são ditos filhos do nó pai, r.

Nós com filhos são comumente chamados de nós internos.

Nós que não têm filhos são chamados de nós externos (folhas).

Page 8: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplo

Page 9: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Terminologia Raiz (root): nó sem pai (A). Nó Interno: nó com pelo

menos um filho (A, B, C, F). Nó Externo ou Folha: nó

sem filhos (E, I, J, K, G, H, D). Ancestrais (de um nó): pai

ou ancestrais do pai do nó. Descendentes (de um nó):

nós que o possuem como ancestral.

Sub-Árvore: árvore consistindo de um nó e dos seus descendentes.

Page 10: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplo

Page 11: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Terminologia O NÍVEL de um nó X é definido como:

O nível de um nó raiz é 1 O nível de um nó não raiz é dado por

Nível de seu nó PAI + 1 O GRAU de um nó X pertencente a uma

árvore é igual ao número de filhos de X Se X é folha, então Grau(X) = 0

O GRAU de uma árvore T é o maior entre os graus de todos os seus nós

Page 12: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplo

Page 13: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Terminologia Profundidade (de um nó):

número de ancestrais. Raiz possui profundidade zero.

Altura (de uma árvore): máxima profundidade de qualquer nó.

Exemplo ao lado ⇒ 3. Altura (de um nó): altura da

sub-árvore com raiz naquele nó. Folhas possuem altura zero. Raiz possui altura da árvore.

Profundidade (de uma árvore): máx. profundidade de uma folha.

Equivalente à altura.

Page 14: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplo

Page 15: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Outras formas de representação Representação por Parênteses

Aninhados: ( A (B) ( C ( D (G) (H) ) (E) ( F (I) ) ) ) ou seja, uma lista generalizada!!

Representação por Diagramas de Venn:

Page 16: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Propriedade Fundamental de Árvores Existe um único caminho da raiz para

qualquer nó da árvore.

Portanto, podemos definir a altura de todas as árvores como sendo o comprimento do caminho mais longo da raiz até uma das folhas.

Por definição, a altura de uma árvore que possui somente um elemento é zero.

Page 17: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplos de árvoresA

B C D

E F

L

G H I J

M N

raiz da árvore ->

Quantas sub-árvores existem na árvore acima?Quais são as sub-árvores? Quais nós são as raízes das sub-árvores da árvore acima?Quais nós são considerados nós internos?Quais nós são considerados nós externos (folhas)?Qual é a altura da árvore?

Page 18: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Roteiro Contextualização

Árvores

Árvores Binárias

Page 19: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores Binárias (AB) Uma árvore binária é constituída de um

conjunto finito de nós. Cada nó pode ter no máximo dois filhos. De maneira recursiva, podemos definir uma

árvore binária como sendo: uma árvore vazia; ou um nó raiz tendo duas sub-árvores,

identificadas como a sub-árvore da direita (sad) e a sub-árvore da esquerda (sae).

Page 20: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Representação Esquemática de AB

Representação esquemática da definição da estrutura de AB

Page 21: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exemplo Árvore Binária

8

9 7

1

13 5 11

4 3

2

raiz da árvore

raiz da sae raiz da sad

Page 22: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Notação Textual de Árvore Binária

Exemplo de árvore binária

Árvore vazia é representada por <>, e árvores não vazias por <raiz sae sad>. Com esta notação, a árvore ilustrada acima é representada por:

<a <b<><d<><>>> <c<e<><>><f<><>>> >

Page 23: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Verificando a altura das árvores

1

6 7

3

8 9 10

4 5

2

Qual a altura da árvore binária ao lado ?Resposta: nível – 1

Qual a altura da árvore binária ao lado ?Em qual nível está o nó C?

nível 0

nível 1

nível 2

nível 3

Page 24: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvore binária própria Também denominada de árvore estritamente binária, é

tal que: Cada nó interno possui exatamente 2 filhos (não vazios).

Denomina-se o par de filhos de: filho esquerdo (left child), e filho direito (right child).

Definição recursiva: Uma árvore de um único nó raiz, ou Uma árvore cuja raiz possui um par ordenado de filhos, cada um dos quais é a raiz de uma árvore binária própria.

Page 25: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

ExemploÁrvore binária própria Árvore de Expressão

Aritmética Árvore Binária associada com uma

expressão aritmética Nós internos: operadores Nós externos: operandos

Exemplo: (2 * (a - 1) + (3 * b))

Page 26: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvore Binária Completa É própria* Se a profundidade da árvore é d, então

cada nó folha está no nível d ou no nível d+1

Os nós folha no nível d estão todos à direita dos internos

Page 27: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvore Binária Completa Cheia Todos os seus nós folha estão no

mesmo nível

Page 28: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Árvores Binárias Balanceadas Para cada nó, as alturas de suas

sub-árvores diferem em, no máximo, 1

Page 29: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exercícios Prove por contra-exemplo que uma AB própria não é

necessariamente uma AB completa. Represente a seguinte expressão aritmética em

uma árvore binária própria de expressão aritmética:( 5 + ( ( 2 / (a + 1) ) - (3 * b) ) ) * ( 10 / c )

Responda com relação à árvore do exercício anterior:

Qual a altura da árvore ?Qual a profundidade da árvore?Qual o grau da árvore?Quais os ancestrais, os descendentes, a profundidade, a altura, o nível, o grau, o pai, os tios, os irmãos e os filhos do nó correspondente ao operador de subtração da expressão ?

Page 30: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Exercícios Represente a árvore do exercício anterior via:

Parênteses Aninhados Diagrama de Venn.

Qual a altura máxima que uma árvore estritamente binária com 45 nós pode ter? Justifique.

Qual a altura máxima que uma árvore estritamente binária com 27 nós externos pode ter? Justifique.

Qual a altura mínima que uma árvore estritamente binária com 43 nós pode ter? Justifique.

Qual a altura mínima que uma árvore estritamente binária com 30 nós externos pode ter? Justifique.

Page 31: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Percursos em Árvores Binárias Muitas operações em árvores binárias

envolvem o percurso de todas as suas sub-árvores, executando alguma ação de tratamento em cada nó.

É comum percorrer uma árvore em uma das seguintes ordens:

Pré-Ordem: tratar raiz, percorrer sae, percorrer sad; Em-Ordem (ordem simétrica): percorrer sae, tratar

raiz, percorrer sad; Pós-Ordem: percorrer sae, percorrer sad, tratar raiz.

Page 32: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Pré-Ordem Imprima os valores

presentes nos nós da árvore ao lado, segundo a condição pré-ordem (tratar raiz, percorrer sae, percorrer sad).

Resultado: 34, 80, 40, 43, 13, 26, 90, 75, 55, 5, 1, 17.

34

55

5

1 17

90

75

26

13

4340

80

Page 33: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Em-Ordem (Ordem Simétrica) Imprima os valores

presentes nos nós da árvore ao lado, segundo a condição ordem simétrica (percorrer sae, tratar raiz, percorrer sad).

Resultado: 40, 80, 26, 90, 13, 43, 75, 34, 55, 1, 5, 17.

34

55

5

1 17

90

75

26

13

4340

80

Page 34: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Pós-Ordem Imprima os valores

presentes nos nós da árvore ao lado, segundo a condição pós-ordem (percorrer sae, percorrer sad, tratar raiz).

Resultado: 40, 90, 26, 13, 75, 43, 80, 1, 17, 5, 55, 34.

34

55

5

1 17

90

75

26

13

4340

80

Page 35: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Aplicações de Árvores Binárias Análise de expressões algébricas:

prefixa, infixa e pósfixa. Prefixa: + * + 3 6 – 4 1 5 = 32

Infixa: 3 + 6 * 4 – 1 + 5 = 32

Pósfixa: 3 6 + 4 1 - * 5 + = 32

Page 36: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Definição da Estrutura de Árvores Binárias Como definir o Tipo Abstrato de Dados

(TAD) que representa árvores binárias?

Há duas formas: Estática; Dinamicamente;

Page 37: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Representação Dinâmica Criar um registro contendo os seguintes

campos: info, sae e sad. Este registro é auto-referenciado através dos

campos sae e sad.

struct arv {int info;struct arv* sae;struct arv* sad;

}; typedef struct arv Arv;

Page 38: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Registro dos nós de uma AB

infosae sad

Page 39: Árvores e Árvores Binárias. Roteiro Contextualização Árvores Árvores Binárias

Principais funções sobre AB Iniciar árvores como vazias; Inserir nós na árvore; Verificar se árvore está vazia; Informar a altura da árvore; Pesquisar ocorrência de um valor no nó da

árvore; Liberar estrutura alocada para as árvores; Percorrer a árvore em pré-ordem; Percorrer a árvore em em-ordem (ordem

simétrica); Percorrer a árvore em pós-ordem.