You are on page 1of 4

Algoritmos recursivos em rvores 1

Algoritmos recursivos em rvores


1. Percurso
Um algoritmo de percurso em uma rvore algum algoritmo que liste todos os elementos
desta rvore, sem repetio. As idias envolvidas neste tipo de algoritmo podem ser aplicadas a
outros algoritmos capazes de responder muitas perguntas importantes, por exemplo:
1. Quantos ns a rvore possui!
". Quantos ns com uma determinada propriedade a rvore possui! #or exemplo, quantos ns
terminais $sem nen%um &il%o' a rvore possui!
(. Qual o valor mximo de uma propriedade dos ns na rvore! #or exemplo, qual o n)mero
de ns do n que tem mais ns $grau ou ordem da rvore'!
*. Qual a representao da rvore em alguma &orma especial! #or exemplo, a representao
+,-#.
.odos estes algoritmos sero de&inidos e implementados recursivamente de maneira /em mais
simples do que iterativamente. 0este cap1tulo estudaremos as de&ini2es recursivas.
3 percurso em pr-ordem ou pr-fixado de&inido da seguinte maneira: primeiro a raiz
visitada4 depois, cada uma de suas su/5rvores da raiz da esquerda para a direita visitada em pr5
ordem. 3/servamos que 6visitar7, aqui, signi&ica que o n impresso na tela ou usado para algum
outro &im $por exemplo, calcular alguma coisa'. 0esta seo, 6visitar7 signi&icar imprimir.
8amos ilustrar o percurso em pr5ordem com alguns exemplos ilustrados a/aixo:
0a rvore $1', a de&inio imediata: o
percurso em pr5ordem A 9 :.
0a rvore $"', o percurso em pr5
ordem deve ser e&etuado da seguinte maneira:
primeiro a raiz A4 depois a su/5r/vore A1,,
em pr5ordem4 depois :. ;as a su/5rvore A1
em pr5ordem 9 < =. Assim, o percurso em
pr5ordem da rvore $"' A 9 < = :.
Algoritmos recursivos em rvores "
0a rvore $(', a determinao do percurso em pr5ordem &oi esquematizada ao lado. >
preciso decompor as su/5rvores A1, A" e 9" em pr5ordem. 3 resultado &inal A 9 < = ? @ A :
,.
0ote que para o/ter a listagem de uma rvore em pr5ordem /asta escrever a sua expresso
+,-# e retirar os parBnteses e as v1rgulas.
<e&inimos tam/m outro percurso em rvores c%amado ps-ordem ou ps-fixada. 0este
percurso, primeiro visitamos todas as su/5rvores da raiz da esquerda para a direita em ps5ordem e
por )ltimo a raiz. Assim, a rvore $1' listada em pr5ordem 9 : A e a rvore $"' < = 9 : A. 3
esquema a/aixo ilustra a listagem da rvore ( em ps5ordem:
#ara rvores /inrias, de&inimos tam/m o percurso em-ordem, ou central. 0este percurso,
visitamos primeiro a su/5rvore esquerda $se %ouver' em5ordem, depois a raiz e por )ltimo a su/5
rvore direita $se %ouver' em5ordem. As rvores $1' e $"' acima so /inrias. Aplicando o percurso
em5ordem C arvore $1', o/temos 9 A :. D a rvore $"' percorrida em5ordem < 9 = A :. 3
exemplo mais complexo da rvore $*' a/aixo esquematizado ao lado:
0ote que a rvore 91 no tem su/5rvore esquerda. Assim, sua listagem em5ordem a raiz <
seguida da su/5rvore direita =. <a mesma &orma, A" no tem su/5rvore direita, logo sua listagem
em5ordem a su/rvore esquerda ? seguida da raiz :.
Algoritmos recursivos em rvores (
2. Percursos em rvores de expresses aritmticas
:onsidere a rvore ao lado, que corresponde C
expresso aritmtica $a E /' F $c G d'. As suas listagens em5
ordem, pr5ordem e ps5ordem correspondem a nota2es
matemticas con%ecidas:
1. =m5ordem: a E / F c G d
". #r5ordem: F E a / 5 c d
(. #s5ordem: a / E c d 5 F
A listagem em5ordem quase corresponde C notao alg/rica $a E /' F $c G d', pois &altam os
parBntesesH #ara conseguirmos a notao alg/rica, devemos modi&icar o algoritmo de listagem em5
ordem para inserir os parBnteses necessrios.
A listagem em pr5ordem resulta na c%amada notao polonesa ou prefixa. =sta notao &oi
inventada pelo matemtico polonBs D. IuJasieKicz para escrever express2es aritmticas sem a
necessidade de parBnteses.
A listagem em ps5ordem resulta na notao polonesa reversa ou infixa, usada em muitas
calculadoras cient1&icas.
3. Outros algoritmos recursivos em rvores
;uitos algoritmos relacionados a rvores encontram uma &orma extremamente simples se
&ormulados recursivamente. 3 exemplo mais simples a contagem do n)mero total de ns em uma
rvore. =ste algoritmo se de&ine assim:
Se a rvore composta apenas da raiz, o nmero de ns 1. Caso contrrio, o nmero
de ns 1 mais o nmero de ns de cada uma das sub-rvores da raiz.
0ote que esta de&inio recursiva, pois de&ine o n)mero de ns da rvore em termos no n)mero de
ns das su/5rvores. Quando o algoritmo c%ega a uma su/5rvore composta apenas de sua raiz $isto
, de um n sem &il%os', ele capaz de dar uma resposta concreta, isto 1. :aso contrrio, o
n)mero de ns tem que ser de&inido em termos do n)mero de ns das su/5rvores.
Um outro exemplo simples o clculo da pro&undidade:
Se a rvore composta apenas da raiz, a sua profundidade 0. Caso contrrio, a
profundidade 1 mais o mximo das profundidades de cada uma das sub-rvores da
raiz.
:laramente, se a rvore composta apenas da raiz, seu n1vel mximo L e, portanto, sua
pro&undidade L. :aso contrrio, a sua pro&undidade ser de&inida pela su/5rvore mais pro&unda.
3/servando a rvore $(' acima, vemos que a pro&undidade de&inida pela su/5rvore A1, pois ela
mais pro&unda que a su/5rvore A".
Algoritmos recursivos em rvores *
4. Exerccios
1. #ara cada uma das rvores da &igura a/aixo, &aa o percurso em pr5ordem, ps5ordem e em5
ordem
". Uma rvore c%eia tem listagem em pr5ordem A 9 : < = ? @. <esen%e esta rvore. Mepita o
exerc1cio considerando que a listagem &oi dada em ps5ordem e em5ordem.
(. ;odi&ique o algoritmo de listagem em5ordem de rvores aritmticas para que seNam inseridos
parBnteses. 3 algoritmo no deve inserir parBnteses em torno dos n)meros. #or exemplo, no deve
escrever $a' F $$/' E $c'', mas somente a F $/ E c'.
*. <escreva os algoritmos recursivos cara calcular a ordem $ou grau' e o n)mero de ns terminais
$ou &ol%as' de uma rvore.
O. <escreva o algoritmo recursivo para calcular o valor da expresso aritmtica contida em uma
rvore.

You might also like