Escolar Documentos
Profissional Documentos
Cultura Documentos
Representação gráfica
Representação hierárquica
Motivação
Definição
Subárvore
Uma árvore ordenada é aquela na qual os filhos de cada nó estão ordenados. Assume-se
ordenação da esquerda para a direita. Desse modo a árvore do primeiro exemplo é
ordenada, mas, a árvore abaixo não.
Árvores Isomórfas
Duas árvores não ordenadas são isomórfas quando puderem se tornar coincidentes através
de uma permutação na ordem das subárvores de seus nós. Duas árvores ordenadas são
isomórfas quando forem coincidentes segundo a ordenação existente entre seus nós.
Árvore Cheia
Uma árvore de grau d é uma árvore cheia se possui o número máximo de nós, isto é, todos
os nós tem número máximo de filhos exceto as folhas, e todas as folhas estão na mesma
altura.
Árvore cheia de grau 2: implementação sequencial.
Array com 7 posições:
Árvore Binária
Uma Árvore Binária T é um conjunto finito de elementos denominados nós ou vértices, tal
que:
T = 0 e a árvore é dita vazia ou
existe um nó especial r, chamado raiz de T, os restantes podem ser divididos em
dois subconjuntos disjuntos, Tre e Trd, que são as subárvores esquerda e direita de
r, respectivamente e as quais, por sua vez, também são árvores binárias.
niv:=niv-1;
End;
End;
End;
Begin {n¡vel}
achou:= false;
n:= 0;
Travessia(t,n,item, achou);
nivel:=n;
End;
7. Retornar o pai de um dado nó
Dado um item, procura se item existe na árvore
Caso positivo retorna o conteúdo do pai do nó
Procedure Travessia(t: tree; item: Telem; var it: Telem; var achou:Boolean);
Begin
If not Vazia(t) Then
Begin
If t^.esq<>nil Then
If Igual(item, t^.esq^.info) Then
Begin
achou:=true;
it:=t^.info;
End;
If not achou Then
If t^.dir<>nil Then
If Igual(item, t^.dir^.info) Then
Begin
achou:=true;
it:=t^.info;
End;
If not achou Then
Travessia(t^.esq, item, it, achou);
If not achou Then
Travessia(t^.dir, item, it, achou);
End;
End; {Travessia}
Begin {pai}
If not Vazia(t) Then
Begin
achou:=false;
If Igual(item, t^.info) Then
pai:=t^.info; {pai do raiz é ele próprio}
Else
Begin
Travessia(t,item,it,achou);
pai:=it;
End;
End;
End;
Tipos de Percurso
Percorrer uma árvore visitando cada nó uma única vez gera uma sequência linear de nós, e
então passa a ter sentido falar em sucessor e predecessor de um nó segundo um
determinado percurso. Há três maneiras recursivas de se percorrer árvores binárias.
Travessia em Pré-Ordem
Pré-ordem:
ABDCEGFHI
visita o nó quando passar a sua esquerda
notação pré-fix
Exercício: aplique para a expressão aritmética ilustrada anteriormente
Travessia em In-Ordem
In-ordem:
DBAEGCHFI
visita o nó quando passar embaixo do nó
notação in-fix
Exercício: aplique para a expressão aritmética ilustrada anteriormente
Travessia em Pós-Ordem
Pós-Ordem
DBGEHIFCA
visita o nó quando passar a sua direita
notação pós-fix
Exercício: aplique para a expressão aritmética ilustrada anteriormente
Procedure InOrdem(N:tree);
Begin
If N <> nil Then
Begin
InOrdem(N^.esq);
Processa(N); {p. ex: imprime}
InOrdem(N^.dir);
End;
End;
Procedure PosOrdem(N:tree)
Begin
If N <> nil Then
Begin
PosOrdem(N^.esq);
PosOrdem(N^.dir);
Processa(N); {p.ex.: imprime}
End;
End;
Begin {busca}
achou:=false;
ptr:=nil;
Pós-Ordem(t,ptr,achou);
busca:=ptr;
End; {busca}
Outra versão para busca
Utiliza implicitamente percurso em Pré-Ordem
Begin {busca1}
busca1:= nil;
busca1:=local(t, item, achou);
End;
Tornar uma árvore vazia
Desaloca todo o espaço de memória da árvore e retorna a árvore ao estado
equivalente ao define, isto é, nula.
Utiliza o algoritmo de Pós-Ordem para percurso
Begin
If not Vazia(t) Then
Begin
Tornar_Vazia(t^.esq);
Tornar_Vazia(t^.dir);
Dispose(t);
End;
t:=nil;
End;