Você está na página 1de 12

Algoritmos e Estrutura de Dados III

rvores
Uma das mais importantes classes de 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 v com raiz A. 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

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:

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 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. Exerccio:

Responda: a) Qual a raiz da rvore?

b) Quais so os nodos terminais?

c) Qual o grau da rvore?

d) Qual o nvel da rvore?

e) Quais so os nodos descendentes do nodo D ?

f) Quais so os nodos ancestrais do nodo # ?

g) Os nodos 4 e 5 so nodos irmos?

h) H caminho entre os nodos C e S?

i) Qual o nvel do nodo 5?

j) Qual o grau do nodo A?

rvores Binrias
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: 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 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: (converta a rvore anteriormente apresentada em uma rvore binria)

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. 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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 prestabelecido. 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; EloE Info EloD

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: Caminhamento PR_FIXADO (raiz-esquerda-direita)

a) visitar a raiz; b) caminhar na subrvore esquerda, segundo este caminhamento; c) caminhar na subrvore direita, segundo este caminhamento. Exemplo:

Caminhamento INFIXADO (esquerda-raiz-direita)

a) caminhar na subrvore esquerda, segundo este caminhamento; b) visitar a raiz; c) caminhar na subrvore direita, segundo este caminhamento. Exemplo:

Caminhamento PS-FIXADO (esquerda-direita-raiz)

a) caminhar na subrvore esquerda, segundo este caminhamento b) caminhar na subrvore direita, segundo este caminhamento c) visitar a raiz; Exemplo:

rvores Binrias de Pesquisa


rvores binrias de pesquisa so aquelas nas quais os dados so distribudos pelos ns de forma a facilitar a pesquisa de um determinado elemento. A distribuio dos dados feita de tal modo que, em qualquer subrvore, todos os elementos situados esquerda da raiz so menores que o elemento da raiz, e todos os situados direita da raiz so maiores que o da raiz. A figura abaixo mostra um exemplo de uma rvore binria de pesquisa.

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. A insero feita mantendo a disposio dos elementos de forma que a rvore continue a ser binria de pesquisa. feita inicialmente uma procura pelo novo elemento na rvore: se ele j estiver presente no inlcui-se ele; caso contrrio criado e inserido o novo elemento na posio onde ele deveria estar presente. A remoo de um nodo de uma rvore binria de pesquisa deve ser efetuada com cuidado, para que os nodos que permanecem na rvore continuem distribudos de acordo com a mesma estratgia que permite a pesquisa binria. Para isso, devem ser analisados trs casos, usando como exemplo a figura abaixo.

1. O nodo a ser retirado uma folha, isto , no tem filhos. Neste caso o nodo simplesmente retirado, como por exemplo o nodo G do exemplo. Depois da remoo, a rvore resultante fica da seguinte maneira:

2. O nodo a ser retirado tem apenas um filho. Neste caso o nodo retirado e em seu lugar colocada a raiz da sua nica subrvore. No exemplo, o nodo retirado o E,

cujo lugar vai ser ocupado pelo nodo C. Depois da remoo, a rvore resultante fica como a figura abaixo:

3. O nodo a ser retirado tem dois filhos. Neste caso, no se retira o nodo desejado, mas altera-se o seu contedo. Por exemplo, se o nodo desejado o B, altera-se o seu contedo para o nodo seguinte na ordem, que o C, e em seguida remove-se o nodo que continha originalmente o valor C. Para determinar o nodo seguinte a outro, caminha-se para a subrvore da direita do nodo original e, em seguida desce-se sempre esquerda, at encontrar o nodo que no tenha filhos esquerda. Depois da remoo, a rvore fica como a figura abaixo:

Você também pode gostar