Upload
denival-santos
View
214
Download
0
Embed Size (px)
Citation preview
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).
Á 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 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 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 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 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 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 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 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 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;