Árvores binárias: construção e percursos

24
06/10/22 EDA - Prof. Paulemir Campos 1 Árvores Binárias: Construção e Percursos UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos

Upload: miranda-tyler

Post on 02-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos. Árvores Binárias: Construção e Percursos. Árvores Binárias: Definições. São estruturas de dados onde existe uma relação hierárquica entre seus elementos constituíntes, chamados nós; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 1

Árvores Binárias:Construção e Percursos

UPE – Caruaru – Sistemas de InformaçãoDisciplina: Estrutura de Dados e ArquivoProf.: Paulemir G. Campos

Page 2: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 2

Árvores Binárias: Definições

São estruturas de dados onde existe uma relação hierárquica entre seus elementos constituíntes, chamados nós;

Há um nó principal, chamado raiz da árvore;

A partir da raiz da árvore, cada nó pode ter no máximo dois nós, chamados filhos esquerdo e direito.

Page 3: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 3

Árvores Binárias: Definições

Por sua vez, os nós à esquerda do nó raiz constituem a Sub-Árvore Esquerda e os nós à direita do nó raiz formam a Sub-Árvore Direita;

Contudo, a raiz de uma árvore binária e suas respectivas sub-árvores esquerda e direita devem formar sub-conjuntos finitos e disjuntos de nós.

Page 4: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 4

Árvores Binárias: Exemplos

E

H I

C

FD

G

B

A

Raiz da Árvore T

Sub-Árvore Direita

Sub-Árvore

Esquerda

A

B

D

G

C

FE

H I

Page 5: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 5

Árvores Binárias: Exemplos

B

A A

B

Raiz da Árvore T1

Filho Direito ou Sub-Árvore Direita de T2

Filho Esquerdo ou Sub-Árvore Esquerda de T1

A

B B

A

Raiz da Árvore T2

Note que as árvores binárias T1 e T2 são diferentes, pois, apesar de terem o mesmo

conteúdo na raiz, o conteúdo de seus

respectivos nós filhos direito e esquerdo são diferentes.

T1 T2

Page 6: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 6

Árvores Binárias: Contra exemplos

B

A

C

FD

G H

E

I

B

A

C

FD

G

E

I

Exemplos de estruturas que não são árvores binárias.

Sub-Árvore

Esquerda Sub-Árvore

Esquerda

Sub-Árvore Direita

Sub-Árvore Direita

Page 7: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 7

Árvores Binárias: Características

Possuem um ponteiro para o nó raiz da árvore (alocação dinâmica);

Cada nó pode ter até dois filhos; Raiz e Sub-Árvores Direita e

Esquerda devem constituir conjuntos disjuntos;

Em informática, crescem de cima para baixo, já que a raiz fica no topo (nível zero).

Page 8: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 8

Árvores Binárias: Nós

O grau de um nó representa o seu número de filhos; Ex.: Um nó de grau 2 indica que ele

tem dois filhos. Tipos de nós:

Folhas ou Externos – Não tem filhos. Não-Folhas ou Internos – Tem ao

menos um filho.

Page 9: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 9

Árvores Binárias: Profundidade

A profundidade ou altura de uma árvore binária é determinada pelo seu maior nível.

B

A

C

FD

G H

E

I

Nível 0

Nível 1

Nível 2

Nível 3

A profundidade ou altura (h) da árvore binária acima é 3 (h=3).

Page 10: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 10

Árvores Binárias: Tipos

Árvore Estritamente Binária: Todo nó não-folha

deve ter sub-árvores esquerda e direita não vazias.

B

A

C

ED

F G

Page 11: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 11

Árvores Binárias: Tipos

Árvore Binária Completa: É uma árvore

estritamente binária em que todas as folhas estão no nível máximo da árvore.

A

C

GF

B

D E

Page 12: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 12

Árvores Binárias: Tipos Árvore Binária

Quase Completa: 1 – Todas as folhas

estão no último ou penúltimo níveis;

2 – E, para cada nó com descendente direito no último nível, todos os descendentes esquerdos folhas também estiverem no último nível.

A

C

GF

B

D E

H I

Page 13: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 13

Árvores Binárias Completas

Cálculo do Número de Nós: O número de nós

(n) é obtido com a fórmula abaixo, sendo fornecida a altura (h) da mesma.

A

C

GF

B

D E

12 1hn Ex.: Na árvore acima de altura h=2, obtemos facilmente com a fórmula ao lado que o número de nós desta árvore binária completa é n=7.

Page 14: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 14

Árvores Binárias Completas

Cálculo da Altura: Sabendo-se o número

de nós (n), pode-se com a fórmula abaixo obter-se a sua altura (h).

12log 1nh

Ex.: Na árvore binária completa acima, cujo número de nós é n=7, obtemos com a fórmula ao lado que sua altura é h=2.

A

C

GF

B

D E

Page 15: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 15

Definindo o tipo da estrutura:

defina estrutura no {caracter dadoponteiro estrutura no esquerdo, direito

} tArvore

Árvores Binárias: Criação

Page 16: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 16

Alocando memória dinamicamente

ponteiro tArvore raiz

raiz = aloque(tArvore)

Árvores Binárias: Criação

Page 17: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 17

Criando uma árvore binária:ponteiro tArvore CriaArvore(caracter

novo){ponteiro tArvore no no = aloque(tArvore)no->dado = novono->esquerdo = NULLno->direito = NULLretorne no

}

Árvores Binárias: Criação

Page 18: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 18

Insere_Esquerda(ponteiro tArvore raiz, caracter atual, caracter novo){ponteiro tArvore folha se (raiz!=NULL){

se (raiz->dado==atual){ /* Encontrou o nó procurado */se (raiz->esquerdo==NULL){

folha = CriaArvore(novo)raiz->esquerdo = folha

} senão escreva(“Inserção inválida”)} senão { Insere_Esquerda(raiz->esquerdo, atual, novo)

Insere_Esquerda(raiz->direito, atual, novo) }}

}OBS.: Insere à direita é análogo a este procedimento.

Árvores Binárias: Insere à Esquerda

Page 19: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 19

Árvores Binárias: Percursos

Principais formas de se percorrer uma árvore binária não vazia:

Passeio Pré-Fixo Passeio Central Passeio Pós-Fixo

Page 20: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 20

Efetua-se o procedimento recursivo, enquanto possível:

Visita-se a raiz; Percorre-se a sub-árvore esquerda em

ordem pré-fixa; Percorre-se a sub-árvore direita em ordem

pré-fixa.

Árvores Binárias: Passeio Pré-Fixo (r-e-d)

Page 21: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 21

Efetua-se o procedimento recursivo, enquanto possível:

Percorre-se a sub-árvore esquerda em ordem central;

Visita-se a raiz; Percorre-se a sub-árvore direita em

ordem central.

Árvores Binárias: Passeio Central (e-r-d)

Page 22: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 22

Efetua-se o procedimento recursivo, enquanto possível:

Percorre-se a sub-árvore esquerda em ordem pós-fixa;

Percorre-se a sub-árvore direita em ordem pós-fixa;

Visita-se a raiz.

Árvores Binárias: Passeio Pós-Fixo (e-d-r)

Page 23: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 23

E

H I

C

FD

G

B

A

Pré-Fixo (r-e-d): ABDGCEHIF

Central (e-r-d): DGBAHEICF

Pós-Fixo (e-d-r): GDBHIEFCA

Árvores Binárias: Exemplos de Passeios

Page 24: Árvores Binárias: Construção e Percursos

04/20/23 EDA - Prof. Paulemir Campos 24

Szwarcfiter, J. L.; Markenzon, L. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: LTC, 2a. ed., 1994.

Veloso, P. et al. Estrutura de Dados. Rio de Janeiro: Editora Campus, 1996.

Referências