Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva [email protected].

29
Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva [email protected]

Transcript of Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva [email protected].

Page 1: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Árvores e Árvores Binárias

Prof. Alexandre Parra Carneiro da Silva

[email protected]

Page 2: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Roteiro Contextualização

Árvores

Árvores Binárias

Page 3: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Roteiro Contextualização

Árvores

Árvores Binárias

Page 4: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 5: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplo de estrutura hierárquica

Um exemplo de estrutura de diretório no Windows 2000

Page 6: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Roteiro Contextualização

Árvores

Árvores Binárias

Page 7: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Árvores

Árvore é uma estrutura de dado adequada para representar hierarquias.

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

Page 8: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 9: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Estrutura de árvores

Page 10: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplos de árvores (1/2)

A

B C D

E F

L

G H I J

M N

A

B C D

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)?

A

Page 11: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplos de Árvores (2/2)

My Documents My Computer

3½ Floppy(A:)

Network

Apostila

Parte I Parte II Parte III

Recycle Bin

Desktop

Local Disk (C:) Local Disk (D:)

Compact Disk (E:)

Removable Disk (F:) Local Disk (I:) Local Disk (J:) Control Panel

Page 12: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 13: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplo de altura em árvores

A

B C D

E F

L

G H I J

M N

Qual a altura da árvore A1?

árvore A1

My Documents My Computer

3½ Floppy(A:)

Network

Apostila

Parte I Parte II Parte III

Recycle Bin

Desktop

Local Disk (C:) Local Disk (D:)

Compact Disk (E:)

Removable Disk (F:) Local Disk (I:) Local Disk (J:) Control Panel

Qual a altura da árvore A2?

árvore A2

Page 14: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Roteiro

Contextualização

Árvores

Árvores Binárias

Page 15: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Á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 16: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Representação Esquemática de AB

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

Page 17: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplo Árvore Binária

8

9 7

1

13 5 11

4 3

2

raiz da árvore

raiz da sae raiz da sad

Page 18: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 19: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Verificando a altura das árvores

1

6 7

3

8 9 10

4 5

2

Qual a altura da árvore binária ao lado ?

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 20: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 21: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 22: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 23: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 24: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Aplicações de Árvores Binárias (1/2)

Como árvores binárias de pesquisa (busca)

Page 25: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Aplicações de Árvores Binárias (2/2)

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 26: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 27: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 28: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Registro dos nós de uma AB

infosae sad

Page 29: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.