Você está na página 1de 19

Arvores

Uma das mais importantes estruturas de dados em computao so as rvores.


Aproveitando-se de sua organizao hierrquica, muitas aplicaes so realizadas usando-se
algoritmos relativamente simples, recursivos e de eficincia bastante razovel.

Definies e representaes bsicas

Uma rvore uma estrutura de dados que se caracteriza por uma relao de
hierarquia entre os elementos que a compem. Exemplos de estruturas em forma de rvores so:
O organograma de uma empresa;
A diviso de um livro em captulos, sees, tpicos, etc;
A rvore genealgica de uma pessoa.

De um modo um pouco mais formal, podemos dizer que uma rvore um conjunto finito
de um ou mais nodos (ns ou vrtices), tais que:
1. Existe um nodo denominado raiz;
2. Os demais nodos formam m>= 0 conjuntos disjuntos s1, s2, ... , sm, tais que cada um
desses conjuntos tambm uma rvore (denominada sub-rvore).

Uma floresta um conjunto de rvores. Se v um nodo de A, a notao Av indica a


subrvore de A com raiz v.

Para visualizar esse conceito, pode-se representa-lo graficamente. H formas diferentes de


representaes grficas de uma rvore. Em todas elas, cada nodo poder ser associado a um
identificador, denominado rtulo.

a) Representao hierrquica
2

b) Representao por conjuntos (diagrama de incluso)

c) Representao por expresso parentetizada (parnteses aninhados)


Cada conjunto de parnteses correspondentes contm um nodo e seus filhos. Se um
nodo no tem filhos, ele seguido por um par de parnteses sem contedo.

( A ( B ( D ( ) E ( ) ) C ( F ( ) ) ) )

d) Representao por expresso no parentetizada


Cada n seguido por um nmero que indica a quantidade de filhos desse nodo, e
em seguida por esses filhos, representados do mesmo modo.

A 2 B 2 D 0 E 0 C 1 F 0

Pode-se representar uma rvore de muitos outros modos, mas interessante notar que,
dentre os exemplos apresentados:
A representao, a) a que permite uma melhor visualizao, e que ser utilizada a partir deste
ponto.
As representaes, c) e d) no permitem boa visualizao da estrutura, mas podem ser teis para
guardar em arquivos os dados de uma rvore.

Como, por definio, os subconjuntos s1, s2,...,sm so disjuntos, cada n s pode


ter um pai. Assim, o desenho abaixo, por exemplo, no representa uma rvore:
3

Definies:

Dada uma rvore qualquer:


1) A linha que liga dois nodos da rvore denomina-se aresta.
2) Diz-se que existe caminho entre dois nodos V e W da rvore, se a partir do nodo V puder-
se chegar ao nodo W percorrendo-se as arestas que ligam os nodos intermedirios entre V e W.
Observa-se que existe sempre um caminho entre a raiz e qualquer nodo da rvore.
3) Se houver um caminho entre V e W, comeando em V diz-se que V um nodo ancestral
de W e W um nodo descendente de V. Se este caminho contiver uma nica aresta, diz-se que V
o nodo pai de W e que W um nodo filho de V. Dois nodos que so nodos filhos do mesmo
nodo pai so denominados nodos irmos.
Uma caracterstica inerente a rvores que qualquer nodo, exceto a raiz, tem um nico
nodo pai.
4) Se um nodo no possui nodos descendentes, ele chamado de folha ou nodo terminal
(externo) da rvore.
5) Grau de um nodo o nmero de nodos filhos do mesmo. Obviamente que um nodo folha
tem grau zero.
6) Nvel de um nodo o nmero de nodos existentes no caminho entre a raiz e o prprio
nodo. A raiz tem nvel 1.
7) O grau da rvore igual ao grau do nodo de maior grau da rvore.
8) O nvel da rvore igual ao nvel do nodo de maior nvel da rvore.
9) O Comprimento do caminho determinado pelo numero de nveis entre estes dois nodos,
diminudo de uma unidade. (Numero de arestas entre os nodos)
10) Nodo de derivao (interno) so os nodos de grau maior que zero, e que,
consequentemente, apresentam alguma subrvores.
11) Altura ou Profundidade o numero de nodos do maior caminho deste nodo at suas
descendentes folhas.

Arvore Ordenada quando a ordem de suas subarvores relevante para a aplicao que
esta sendo representada.

A A

B C C B

Caso, estas duas arvores sejam ordenadas, ento, elas so diferentes entre si.
4

rvore binria / n-ria, dita binria quando apresentar no mximo grau 2 em cada nodo
e n-ria quando apresentar grau n em cada nodo.
Arvores Isomorfas, duas arvores no ordenadas so isomorfas quando possvel que se
tornem coincidentes atravs de uma permutao na ordem das subrvores de seus nodos.
Arvore Balanceadas, quando existir uma distribuio equilibrada entre os nodos da
rvore, ou seja, existe uma diferena mnima entre todas as folhas e a raiz. Uma rvore cheia ou
completamente balanceada aquela em que todas as folhas esto a uma distancia igual da raiz.

Operaes Sobre rvores

Com base na terminologia, uma arvore definida formalmente como um conjunto finito T
de zero ou mais nodos, podendo ocorrer duas situaes:
1 Caso o numero de nodos de uma arvore seja diferente de zero, ento:
a) Sempre existir um nodo raiz
b) Os demais nodos forma m > 0 conjuntos disjuntos, onde cada um desses conjuntos
, por sua vez, uma rvore denominada subrvores.
2 Caso o numero de nodos seja 0 a rvore denominada vazia.

As operaes bsicas so
a) Criao de uma rvore operao atravs da qual so alocadas as variveis
necessrias para a definio da rvore e iniciada suas variveis de controle. As demais operaes
s sero habilitadas com a concluso desta.
b) Insero de um novo nodo em uma determinada posio, sendo, uma raiz, uma
folha ou posio intermediaria.
c) Excluso de um nodo quando o nodo excludo no uma folha necessrio a
reorganizao da estrutura da rvore.
d) Acesso a um nodo para consulta ou atualizao;
e) Destruio de uma rvore.

Outras operaes podem ser executadas como, determinar o pai de um nodo, o tamanho de
uma rvore (total de nodos) a altura ou nvel da rvore.

rvores implementadas atravs de contiguidade fsica:


Considerar duas operaes
a) Insero ou remoo estas duas operaes implicam quase sempre em
deslocamento de informaes ao longo do arranjo, pois, quando houver insero, os nodos aps o
nodo inserido devero ser avanados, e quando houver a remoo, os nodos devero ocupar a
posio removida.
b) Acesso a um nodo respeitar a hierarquia da rvore.
5
A

B C D

E F G H I

Implementao por nveis e por profundidade.


Por Nveis, inicia com a representao da raiz na primeira posio, nas seguintes os sucessores
diretos da raiz, em seguida os sucessores de cada nodo, seguindo a mesma ordem, sendo
necessrio informar em cada nodo a quantidade descendentes.
Ex: A3 B1 C0 D4 E0 F0 G0 H0 I0
Por Profundidade, inicia com a representao da raiz na primeira posio, nas seguintes, o
primeiro sucessor da raiz, seguido de todos os seus sucessores, depois o segundo sucessor da raiz
seguido de todos os seus sucessores, seguindo a mesma ordem, sendo necessrio informar em cada
nodo a quantidade de descendentes.
Ex: A3 B1 E0 C0 D4 F0 G0 H0 I0

Arvores Implementadas por encadeamento.


Cada nodo da rvore representado por uma varivel que deve apresentar, as informaes
do nodo, e os endereos de seus descendentes diretos.
O acesso ser sempre pelo nodo raiz, e os demais sero alcanados somente atravs dos
endereos contidos nos elos de cada nodo.
Na implementao fsica, todos os nodos devem apresentar a mesma estrutura, ento, deve-
se reservar espao para armazenar tantos elos quanto o valor do grau mximo da rvore.

Ex:
A
A

B C D
B C D

E F G
E F G

Operaes bsicas:
a) Criao da rvore inicializar no endereo nulo o ponteiro que vai conter o
endereo do nodo raiz;
6

b) Insero de um novo nodo inserido geralmente como nodo folha, depois de


alocado, seu endereo colocado em um dos campos elo do seu pai (encadeamento), o nodo raiz
no haver endereo do antecessor (pai);
c) Remoo de um nodo o nodo liberado, e no campo elo de seu pai colocado o
endereo nulo, se o nodo removido for uma folha, porem se o nodo tiver filhos, dever ser
definida uma regra, eliminar todos os filhos (subrvore) ou reorganizar a rvore;
d) Acesso a um nodo sempre acessada atravs da raiz, e ser percorrida atravs dos
elos, como o acesso se da sempre atravs do nodo pai, geralmente se faz necessrio guardar a
posio do pai, para posteriormente chegar a outros filhos.
e) Destruio da rvore percorrer a rvore a partir da raiz e liberar todos os nodos.

Exerccio:

Responda:
a) Qual a raiz da rvore? A
b) Quais so os nodos terminais? Y 8 9 g r w 3 i m & 5 # 7
c) Qual o grau da rvore? 4
d) Qual o nvel da rvore? 6
e) Quais so os nodos descendentes do nodo D ? T 4 &
f) Quais so os nodos ancestrais do nodo # ? U N E A
g) Os nodos 4 e 5 so nodos irmos? Nao
h) H caminho entre os nodos C e S? Sim C H S
i) Qual o nvel do nodo 5? 5
j) Qual o grau do nodo A? 4
7

B C

D E F G H

I J K L M

Escreva a arvore por expresso parentetizada


(A ( B ( D ( ) E ( I () J ( )) F( ) ) C ( G ( K ( ) H ( L ( ) M ( ) ) ) )
Escreva a arvore por expresso nao parentetizada -
A2B3D0E2I0J0F0C2G1K0H2L0M0

Desenhe a representao por conjuntos

D F
E
8

Arvores Binarias

Conforme j mencionado, as rvores constituem as estruturas no seqenciais com maior


aplicao em computao. Dentre as rvores, as binrias so, sem dvida, as mais comuns.

Deve-se observar que a ordem em que esto posicionadas as subrvores em relao


raiz fundamental. Uma vez que cada nodo tem no mximo dois nodos filhos, cada um destes
nodos (se houverem) so identificados segundo a sua posio relativa raiz. Distingue-se, ento, o
nodo filho esquerda do nodo filho direita e, conseqentemente, a subrvore esquerda da
subrvore direita.

Exemplo:
A A A

B B B

Nos exemplos acima, as rvores apresentadas so distintas, pois no primeiro


exemplo, o nodo A tem somente um filho esquerda e no segundo exemplo, o nodo tem um filho
direita e o exemplo central no caracteriza uma arvore binaria.

Arvore estritamente binaria cada nodo tem grau 0 ou dois;


Ex

Arvore binaria completa uma arvore estritamente binria na qual todo nodo que
apresente alguma subarvore vazia esta localizada no ultimo ou no penltimo nvel;
Ex
9

Arvore binria cheia quando todas as folhas estiverem no mesmo nvel e todos os nodos
internos tem grau 2. Uma rvore cheia e completa e estritamente binria.
EX

Transformao em rvore binria


1) a raiz da rvore (subrvore) ser a raiz da rvore (subrvore) binria.
2) O nodo filho mais esquerda da raiz da rvore (subrvore) ser o nodo filho esquerda da
raiz da rvore (subrvore) binria. Cada nodo irmo de V, da esquerda para a direita, ser o nodo
filho direita do nodo irmo da esquerda, at que todos os nodos filhos da raiz da rvore
(subrvore) j tenham sido includos na rvore binria em construo.

Exemplo:
A
A

B
B C D

E C
E F G
D

G
10

Tratamento de expresses aritmticas

As rvores podem ser utilizadas para a representao de expresses aritmticas,


sendo que toda expresso aritmtica pode ser representada desta forma, mostrando como seria
calculada.

Para colocarmos uma expresso em forma de rvore devemos considerar cada operador
como um n da rvore e os seus operadores como suas subrvores. Considere a presso a seguir:

(A+((BC)*(D%(E*F))) )

A *

- %
%

B C D *

E F

Representao de rvores binrias (implementao)

Cada nodo componente de uma rvore binria tem no mximo dois filhos, sendo
necessrios, portanto, dois campos de elos para representa-lo. A configurao de um nodo numa
rvore binria a que segue:

Sendo que EloE (i) indica o endereo do nodo filho esquerda do nodo de ndice i e EloD
(i) aponta para o nodo filho direita. Uma rvore binria pode, ento, ser representada por;
a) uma matriz Info que conter os campos de informaes dos nodos, e
b) dois vetores de ligao, EloE e EloD.
ou uma estrutura com um campo info, um campo EloE e um campo EloD.
11

Sendo conhecido o ndice do nodo raiz de uma rvore, a mesma completamente definida
(supe-se que o ndice da raiz esteja contido na varivel RAIZ).
Exemplo: a seguinte rvore (os nmeros abaixo de cada nodo indicam o ndice do mesmo)

Pode ser representada por:

ndice EloE Info EloD


1 17 H
2
3
4 8 Z 13
5
6
7
8 1 F 14
9
10
11
12
13 9
14
15
16
17
12

Caminhamento em rvores binrias

H diversas formas de manipulao de rvores binrias e, em geral, estas supem o


exame dos contedos (informaes) dos nodos. O acesso sistemtico aos nodos de uma rvore de
maneira que cada nodo seja examinado no mximo uma nica vez (para que no haja repetio),
sugere que a rvore seja percorrida segundo algum critrio pr-estabelecido. Esta ao de
percorrer a rvore, com a condio de que cada nodo seja examinado no mximo uma vez,
denomina-se caminhamento na rvore binria.
Se for realizado um caminhamento numa rvore de forma que todos os seus nodos
sejam visitados (acessados), os mesmos so implicitamente organizados segundo uma ordem
linear. Dependendo do critrio estabelecido para caminhar na rvore, obtm-se uma seqncia dos
nodos correspondentes xi1 xi2 ... xin, em que:
a) n o nmero de nodos da rvore;
b) xj o contedo do nodo que ocorre na j-sima posio na seqncia de
caminhamento da rvore; e
c) xik ocorre antes de xip na seqncia se o nodo com informao xik visitado antes
do que o nodo xip, segundo o caminhamento escolhido.

Em geral so utilizadas trs formas de caminhamentos em rvores binrias e estas so


determinadas dependendo da ordem em que so visitados o nodo raiz, sua subrvore esquerda e
sua subrvore direita (o termo visitar significa a realizao de alguma operao sobre a
informao do nodo, como modificao da mesma, impresso ou qualquer outra). Os trs
caminhamentos usuais so descritos como segue:
A

B E

C D
F
Caminhamento PR_FIXADO (raiz-esquerda-direita) PR-ORDEM
a) Visitar a raiz;
b) Caminhar na subrvore esquerda, segundo este caminhamento;
c) Caminhar na subrvore direita, segundo este caminhamento.
Exemplo: A B C D E F

Caminhamento INFIXADO (esquerda-raiz-direita) EM ORDEM


a) Caminhar na subrvore esquerda, segundo este caminhamento;
b) Visitar a raiz;
c) Caminhar na subrvore direita, segundo este caminhamento.
Exemplo: C B D A E F
13

Caminhamento PS-FIXADO (esquerda-direita-raiz) PS-ORDEM


a) caminhar na subrvore esquerda, segundo este caminhamento
b) caminhar na subrvore direita, segundo este caminhamento
c) visitar a raiz;
Exemplo: C D B E A
14

Arvore de Busca Binaria (Arvore de pesquisa binaria)

Em um vetor com os dados ordenados, possvel obter algoritmos de pesquisa eficientes


denominados pesquisa binria, porem a insero e a remoo no so eficientes devidos a
necessidade de reorganizao da estrutura para manter a ordenao.
As listas ligadas resolvem o problema da insero e remoo, porem os algoritmos de
pesquisa so sequenciais e por isso podem ser ineficientes dependendo o tamanho da arvore.
rvores de busca binrias so aquelas nas quais os dados so distribudos pelos ns de
forma a facilitar a pesquisa de um determinado elemento, e obter maior eficincia na insero e na
remoo de ns.
A distribuio dos dados realizado rigidamente pelas propriedades:
1. Todos os itens da subrvore da esquerda so menores que a raiz;
2. Todos os itens da subrvore da direita so maiores que a raiz;
3. Cada subrvore tambm uma arvore binria.
4. Quando houver uma igualdade ser inserido a Direita.

Ex:
15

Ex: Construa a arvore de busca binaria com os seguintes dados:


14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14 e 15

14

15
4

3 9 14 18
8

7 9
16 20

5
15 17

4
Com essa distribuio, a pesquisa de um elemento qualquer fica mais eficiente. Em
qualquer nvel, verifica-se primeiramente a raiz. Se o dado procurado estiver na raiz , a pesquisa
est encerrada. Caso contrrio, se o elemento for menor que o da raiz, procura-se na subrvore
esquerda; se for maior, procura-se na subrvore da direita. Mas nunca necessrio procurar nas
duas subrvores.

Operaes com arvores de busca binaria

Insero
A arvore de busca binria tem a forte caracterstica de estar sempre ordenada, assim no
permitido que um novo nodo j assuma filhos, isto , ser sempre inserido como um filho,
respeitando a regra de menor a esquerda e maior ou igual a direita.

Remoo.
1. O elemento a ser removido esta na raiz;
a. Se a raiz no possuir filho, remover o nodo e anular a arvore
b. Se a raiz possuir um nico filho, remover a raiz e o seu filho ser a nova
raiz;
c. Se a raiz possuir dois filhos (somente um dever assumir a raiz), Qual das
subarvores devera assumir a raiz?? Que deve ser feito com a outra
subrvore?? No existe nodo rfo;

2. As propriedades da arvore de busca binaria determina a soluo, pois, no tem


possibilidade de existir em uma subrvore esquerda elementos maiores ou igual a
raiz, e na subrvore a direita no pode existir nenhum elemento menor que a raiz.
16

3. Dessa forma, o maior elemento da subrvore esquerda assumira o posicionamento


da raiz.

Exemplos:
A) Remoo de uma folha: remover o nodo C

A A

B C B

B) Remoo de um nodo com um filho a direita e nenhum a esquerda; Remover F.


E E

B F B H

A C H A C

C) ) Remoo de um nodo com um filho a esquerda e nenhum a direita ; Remover B.

E E

B F A F

A G H G H
C

D) Remover um nodo com dois filhos (uma raiz); Remover E

E H

B F B F

A H G H A G H
C C
17

Exerccio com arvores:


1. Monte a arvore da expresso: a ( b c ( e ( f g ) ) h)
2. Uma arvore binaria tem dez ns e o passeio resulta em:
a. Pr-ordem: J C B A D E F I G H
b. Em-Ordem; A B C E D F J G I H
c. Desenhe a arvore correspondente
3. Uma rvore binria tem sete ns e os passeios resultam em:
a. Pr-Ordem: G F D A B E C
b. Ps-Ordem: A B D C E F G
c. possvel desenhar a arvore? Justifique
4. Desenhe todas as arvores possveis no semelhantes com trs nos (A B C)
5. Qual o numero mximo de ns no nvel 5 de uma rvore binaria:
6. Dada a ordem Infixa (em-ordem) da expresso:
a. ( C + D + A * B ) * ( E + F )
b. Desenhe a arvore correspondente
c. Caminhamento em Pr-Ordem
d. Caminhamento em Ps-Ordem
7. Dada a ordem Ps-fixa (ps-ordem) da expresso:
a. A B * C D / + E F - *
b. Desenhe a rvore correspondente;
c. Caminhamento Em-Ordem
d. Caminhamento Pr-Ordem
8. Com rvore a seguir, encontre os caminhamentos Em-Ordem, Ps-Ordem e Pr-
Ordem:
+

* *

C + D *

A B F +

G H
18

9. Ache a raiz de cada uma das rvores binrias:


a. Passeio Ps-Ordem: F C B D G
b. Passeio Pr-Ordem: I B C D F E N
c. Passeio Em-Ordem: C B I D F G E
10. Com a rvore a seguir:
A

B F

C G

D E F
H I+

K
a. Ache o Grau de Cada N;
b. Encontre os ns folha;
c. Complete a rvore binria com tantos ns quantos forem necessrios para
transforma-la em rvore binria completa;

11. Desenhe uma rvore completa de nvel 4.


12. Com a arvore a seguir, encontre:
G

B P F

M N O J K

C H L I

D E

a. Os filhos de H
19

b. O n pai de K
c. Os filhos de B
d. Os ancestrais de E
e. Os Descendentes de B
f. O grau da rvore
g. O nvel da Arvores
h. O nvel do no J
i. As folhas
j. Os irmos de M
k. O caminho de F a E
l. O caminho de B para H
m. Transforme a rvore em arvore binria