Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula...

38
1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof. Jesús P. Mena-Chalco [email protected] 1Q-2019

Transcript of Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula...

Page 1: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

1

Aula 07 Árvores (parte 1) Definição e percurso

Algoritmos e Estruturas de Dados I

Prof. Jesús P. [email protected]

1Q-2019

Page 2: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

2

Vetor (array): Elementos contiguos na memória. Todos do mesmo tipo de dado

Page 3: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

3

Vetor (array): Elementos contiguos na memória. Todos do mesmo tipo de dado

Listas ligadas: Elementos não necessariamente contiguos na memória.Podem ter ‘atributos’ diferentes.

Page 4: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

4

Vetor (array): Elementos contiguos na memória. Todos do mesmo tipo de dado

Listas ligadas: Elementos não necessariamente contiguos na memória.Podem ter ‘atributos’ diferentes.

Árvores:Elementos não necessariamente contiguos na memória.Podem ter ‘atributos’ diferentes.

Page 5: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

5

Structs

Para uma lista ligada:

Para uma lista duplamente ligadae também para uma árvore em quecada nó tenha no máximo 2 ligações:

Page 6: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

6

Árvores reais

Page 7: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

7

Árvore real “binária”

Page 8: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

8

Forma e convenção

Por convenção as árvores“computacionais” tem umarepresentação gráfica comcrescimento invertido.

Page 9: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

9

Forma e convenção

Page 10: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

10

Forma e convenção

Page 11: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

11

Page 12: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

12

Representação hierárquica

Representação por barras

Representação por parênteses

Page 13: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

13

Árvores

Uma árvore é uma estrutura de dados mais geral que uma lista ligada.

Nessa aula examinaremos os conceitos e operações “mais simples” sobre árvores.

Page 14: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

14

Árvores

São estruturas não lineares.

Representação natural para dados aninhados.

Muito úteis para resolver uma enorme variedade do problema envolvendo algoritmos.

Não é uma árvore

Page 15: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

15

Árvores

Page 16: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

16

Árvore e Floresta

Uma árvore enraizada T, é um conjunto finito de elementos denominados vértices (nós) tais que:

T é uma árvore vazia, ouExiste um vértice chamado raiz de T(r(T))

Uma floresta é um conjunto de árvores. Se v é um vértice de T, a notação T(v) indica a subárvore de T com raiz v.

Um vértice que não possui descendentes próprios é chamado de folha.Um vértice não folha é dito interior.

Page 17: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

17

Árvores binárias (binary trees)

Uma árvore binária enraizada T, é um conjunto finito de elementos denominados vértices tais que:

T é uma árvore vazia, ouExiste um vértice chamado raiz de T(r(T)), e os restantes podem ser divididos em dois subconjuntos:

Te(r(T)): a subárvore esquerda da raiz

Td(r(T)): a subárvore direita da raiz

Os quais são também árvores binárias.

Page 18: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

18

Exemplo de árvore binária

Page 19: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

19

Melhores momentos sobre:Inserção de elementos em uma lista ligada

Page 20: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

20

Inserir elemento no início da lista

Page 21: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

21

Inserir elemento no final da lista

Page 22: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

22

Atividade 01

O que realiza o seguinte programa?

Page 23: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

23

Atividade 01

50

10 90

70 100

Page 24: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

24

Atividade 01

10

20

30

40

50

Page 25: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

25

Busca: O(n) ou O(lg n)

Busca: O(Altura da árvore )

Page 26: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

26

Sobre a altura de árvores

Page 27: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

27

Árvores binárias (binary trees)

(a) A. estritamente binária:Cada vértice possui 0 ou 2 filhos.

(b) A. binária completa: Os filhos estão no último ou penúltimo nível.

(c) A. cheia: Os filhos estão no último nível.

Page 28: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

28

Árvores binárias (binary trees)

O número de subárvores esquerdas e direitas vazias em uma árvore binária com n>0 vértices é n+1.

Page 29: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

29

Varredura / Percurso

→ Visita sistematica a cada vértice

– Uma árvore é uma estrutura não sequencial

Page 30: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

30

Varredura

Visitar um vértice significa operar, de alguma forma, com a informação a ele relativa.

Percorrer uma árvore significa visitar os seus vértices exatamente um vez.Contudo, no processo de percorrer a árvore pode ser necessário passar várias vezes por alguns de seus vértices sem visitá-los.

Muitos algoritmos sobre árvores ficam mais simples quando escritos de forma recursiva.

Page 31: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

31

Varredura

Uma maneira particularmente importante é a ordem esquerda-raiz-direita (e-r-d)

→ inorder traversal.→ percurso em ordem.→ percurso em ordem simétrica.

A subárvore esquerda da raiz, em ordem e-r-d;Depois a raiz;Depois a subárvore direita da raiz, em ordem e-r-d.

Page 32: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

32

Varredura

Como seria a varredura e-r-d?

Page 33: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

33

Varredura

Na figura abaixo, os nós estão numeradas na ordem da varredura e-r-d.

5

3 8

1 4

0 2

6 9

7

Page 34: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

34

Varredura

Uma função recursiva que faz a varredura e-r-d de uma árvore binária:

Page 35: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

35

Varredura

0

1 6

2 5

3 4

7 9

8

Page 36: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

36

Varredura

9

4 8

2 3

0 1

6 7

5

Page 37: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

37

Varredura

9

4 8

2 3

0 1

6 7

5

0

1 6

2 5

3 4

7 9

8

5

3 8

1 4

0 2

6 9

7

erd red

edr

Se n é o número de vértices, e a visita para cada vértice tiver um custo constante, a visita de todos os vértices teria um custo de O(n)

Page 38: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 07 Árvores (parte 1) Definição e percurso Algoritmos e Estruturas de Dados I Prof.

38

Varredura

Uma função recursiva que faz a varredura e-r-d de uma árvore binária r:

Exercício: escrever uma versão iterativa desta função.

//