58
Á r v o r e s

aula_arvore.pdf

Embed Size (px)

Citation preview

Á r v o r e s

Á r v o r e s

Roteiro

Terminologia Básica Representação em Memória Árvores Binárias Representação de Árvores Binárias Caminhamento em Árvores Binárias Árvores Binárias de Pesquisa

Á r v o r e s Terminologia Básica

– Conceito: As árvores são estruturas de dados capazes de representar o relacionamento hierárquico entre diversas informações.

– Exemplos

Árvore genealógica de uma família Organograma de uma empresa Árvore estrutural de um povo

Á r v o r e sProto-indo-europeu

Itálico Helênico Germânico

Osco-umbriano Latino

Oscano Umbriano

Francês Romeno

GregoNorteGermânico

OesteGermânico

Á r v o r e Terminologia Básica

– Definição: Uma árvore é um conjunto finito de um ou mais nós de tal natureza que:

Existe um nó especialmente designado denominado raiz;

Os nós restantes estão desdobrados em N conjuntos separados (N >= 0) T1, T2, ... , TN, em que cada um dos conjuntos se constitui uma árvore (denominadas de sub-árvores da raiz).

RaizRaiz

Á r v o r e s

Sub-árvoreSub-árvore

Á r v o r e s Terminologia Básica

– A definição de árvore é recursiva.

– A exigência que T1, T2, ... , TN sejam disjuntos proíbe que as subárvores jamais sejam interligadas. Resultado: cada item numa árvore é a raiz de alguma sub-árvore total.

Á r v o r e s Terminologia Básica

– Cada nó representa o fator da informação e mais os ramos que os ligam a outros nós (nós-filhos)

NóRamo

Á r v o r e Terminologia Básica

– Grau de um nó é o número de subárvores desse nó.

Grau 3

Grau 2 Grau 1

Á r v o r e Terminologia Básica

– Os nós cujo grau é igual a ZERO são denominados de nós-folhas ou nó terminal.

– Os nós intermediários são, por conseqüência, denominados de nós não-folhas ou nós não-terminais.

Á r v o r e s

Grau 0 Grau 0

Á r v o r e Terminologia Básica

– Grau da árvore é o maior grau de seus nós constituintes

Grau da árvore: 3

Á r v o r e Terminologia Básica

– Nomenclaturas adicionais

nós filhos de...

nó pai de...

nós irmãos de...

nós ancestrais de...

Á r v o r e s

A

B DC

E IF G JH

K PL M QN O

Á r v o r e Terminologia Básica

– Irmãos

B, C e D

E e F; G, H e I; J é filho único – não tem irmãos

K e L; M e N; P e Q

Á r v o r e Terminologia Básica

– Filhos

de A são B, C e D

de B são E e F

de C são G, H e I

de D é J (J é filho único)

Á r v o r e Terminologia Básica

– Ancestrais

de B é apenas A

de G são C e A

de K são F, B e A

de P são J, D e A

Á r v o r e Terminologia Básica

– Descendentes

de A são todos os nós da árvore (A é a raiz)

de B são E, F, K e L

de C são G, H, I, M, N e O

de D são J, P e Q

Á r v o r e Terminologia Básica

– Nível de um nó é definido por:

A raiz da árvore está no nível 1 (um)

Estando um nó no nível k, os seus filhos estarão no nível (k + 1).

– Observação: Existem literaturas que consideram a raiz nível 0 (zero).

Á r v o r e s

A

B DC

E IF G JH

K PL M QN O

Nível 1

Nível 2

Nível 3

Nível 4

Á r v o r e Terminologia Básica

– Altura ou Profundidade de uma árvore é o maior nível atingido por qualquer nó da árvore.

A árvore anterior tem altura igual a 4

Á r v o r e Representação em Memória

– Como representar, em memória, uma árvore ?

Podemos utilizar o mesmo conceito que utilizamos em listas ligadas e, por meio de ponteiros, representar o relacionamento existente um nó e seus nós-filhos.

Á r v o r e Representação em Memória

Informações P1 ...P2 P3 PN

Ponteiros para cada uma das subávores desse nó

Ponteiros para cada uma das subávores desse nó

Á r v o r e Representação em Pascal

Type

Apontador = ^Registro;

Registro = Record

info : TIPO_INFO;

P1,

P2,

...,

Pn : Apontador

End;

Á r v o r e Árvores Binárias

– Definição: É um conjunto finito de nós, que se apresenta vazia ou que consiste de uma raiz e de, no máximo, duas árvores binárias separadas, denominadas de subárvore esquerda e subárvore direita.

Á r v o r e s

Á r v o r e Representação de Árvores Binárias

Informaçõesesquerda direita

Ponteiro para a

subárvore esquerda

Ponteiro para a

subárvore esquerda

Ponteiro para a subárvore

da direita

Ponteiro para a subárvore

da direita

Á r v o r e Representação de Árvores Binárias

Type

Apontador = ^Registro;

Registro = Record

info : TIPO_INFO;

Esquerda,

Direita : Apontador

End;

Á r v o r e s

12

08 06

26 18 32

22 1401 40

Á r v o r e s

DuasÁrvores Binárias Distintas12

18

22

12

18

22

Á r v o r e Caminhamento em Árvores Binárias

– Definição: A operação de caminhamento é o fato de realizar a travessia da árvore de forma que:

Todos os nós da árvore sejam visitados;

Cada nó apenas seja visitado uma única vez;

Á r v o r e Caminhamento em Árvores Binárias

– A mais importante característica para um caminhamento é o momento em que ocorre a visita à informação presente no nó;

– A visita pode ser realizada em três “momentos” diferentes;

Á r v o r e Caminhamento em Árvores Binárias

– Caminhamentos

Pré-Ordem (Pré-fixado)

Em-Ordem (Central ou Infixado)

Pós Ordem (Pós-fixado)

Á r v o r e Caminhamento em Árvores Binárias

– Caminhamento Pré-Ordem (Pré-Fixado)

Realizar a visita

Caminhar na sub-árvore da esquerda

Caminhar na sub-árvore da direita

Á r v o r e sProcedure Pre_Ordem (raiz : apontador);

begin

if (raiz <> nil) then

begin

Visita (raiz);

Pre_Ordem (raiz ^. esquerda);

Pre_Ordem (raiz ^. direita);

end;

end;

Á r v o r e s12

08 06

26 18 32

22 1401 40

Pré-Ordem: 12, 08, 26, 18, 22, 01, 06, 32, 14, 40

Á r v o r e s Caminhamento em Árvores Binárias

– Caminhamento Em-Ordem (Central)

Caminhar na sub-árvore da esquerda

Realizar a visita

Caminhar na sub-árvore da direita

Á r v o r e sProcedure Em_Ordem (raiz : apontador);

begin

if (raiz <> nil) then

begin

Em_Ordem (raiz ^. esquerda);

Visita (raiz);

Em_Ordem (raiz ^. direita);

end;

end;

Á r v o r e s12

08 06

26 18 32

22 1401 40

Em-Ordem: 26, 08, 22, 18, 01, 12, 06, 14, 32, 40

Á r v o r e s Caminhamento em Árvores Binárias

– Caminhamento Pós-Ordem (Pós-fixado)

Caminhar na sub-árvore da esquerda

Caminhar na sub-árvore da direita

Realizar a visita

Á r v o r e sProcedure Pos_Ordem (raiz : apontador);

begin

if (raiz <> nil) then

begin

Pos_Ordem (raiz ^. esquerda);

Pos_Ordem (raiz ^. direita);

Visita (raiz);

end;

end;

Á r v o r e s12

08 06

26 18 32

22 1401 40

Pós-Ordem: 26, 22, 01, 18, 08, 14, 40, 32, 06, 12

Á r v o r e s Árvores Binárias de Pesquisa - ABP

– Conceito: Uma árvore binária de pesquisa (ABP) é uma árvore binária em que:

Todos os nós possuem um atributo determinante, ou seja, uma informação que identifica de maneira única aquele nó em relação aos demais. A esse atributo denominamos de chave do nó

Á r v o r e s Árvores Binárias de Pesquisa - ABP

A operação de inserção de um novo nó obedece às seguintes regras:

– Se a árvore atual está vazia, o novo nó se torna a raiz dessa árvore;

Á r v o r e s Árvores Binárias de Pesquisa - ABP

– Se o valor da chave do novo nó for menormenor que o valor da chave presente na raiz da árvore atual, o novo nó é inserido na sub-árvore da esquerda;

– Se o valor da chave do novo nó for maiormaior que o valor da chave presente na raiz da árvore atual, o novo nó ´é inserido na sub-árvore da direita;

Á r v o r e s Árvores Binárias de Pesquisa – ABP

– Conseqüências:

Todos os nós que estão na sub-árvore da esquerda tem valores de chave menores quemenores que o valor da chave presente na raiz dessa árvore;

Todos os nós que estão na sub-árvore da direita tem valores de chave maiores quemaiores que o valor da chave presente na raiz dessa árvore;

Á r v o r e s Árvores Binárias de Pesquisa – ABP

– Conseqüências:

Ao realizarmos caminhamento em ordem obtemos, na saída, os nós em ordem crescente de acordo com o valor da chave;

Á r v o r e s

Procedure InsereNo(Var Raiz : Apontador; NovoNo : Apontador);

Begin

if (Raiz = nil)

Then

Raiz := NovoNo

Else if (NovoNo ^. Valor < Raiz ^. Valor)

Then

InsereNo (Raiz ^. Esquerda, NovoNo)

Else

InsereNo (Raiz ^. Direita, NovoNo)

End;

Á r v o r e s

12

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

Á r v o r e s

12

8

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

Á r v o r e s

12

8 26

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

1

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

1

6

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

1

6 18

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

1

6 18

32

Á r v o r e s

12

8 26

22

Inserção dos valores: 12, 8, 26, 22, 1, 6, 18, 32, 40

1

6 18

32

40