2. 10/10/13
2
• UmaUma árvore bináriaárvore binária é um conjunto finito de elementosé um conjunto finito de elementos
que está vazio ou é particionado em três subconjuntosque está vazio ou é particionado em três subconjuntos
disjuntos:disjuntos:
O primeiro subconjunto contém um único elementoO primeiro subconjunto contém um único elemento
chamadochamado raizraiz da árvore;da árvore;
Os outros dois subconjuntos são em si mesmosOs outros dois subconjuntos são em si mesmos
árvores binárias, chamadas:árvores binárias, chamadas:
subárvore esquerdasubárvore esquerda; e; e
subárbore direitasubárbore direita da árvore original.da árvore original.
Uma subárvore esquerda ou direita pode estarUma subárvore esquerda ou direita pode estar
vaziavazia..
Cada elemento de uma árvore binária é chamadoCada elemento de uma árvore binária é chamado
nónó da árvore.da árvore.
1. Árvores Binárias1. Árvores Binárias
3. 10/10/13
3
• IlustraçãoIlustração: nove nós com A como sua raiz. Sua: nove nós com A como sua raiz. Sua
subárvore esquerda está enraizada em B e sua subárvoresubárvore esquerda está enraizada em B e sua subárvore
direita, em C.direita, em C.
1. Árvores Binárias1. Árvores Binárias
4. 10/10/13
4
• IlustraçãoIlustração: nove nós com A como sua raiz. Sua: nove nós com A como sua raiz. Sua
subárvore esquerda está enraizada em B e sua subárvoresubárvore esquerda está enraizada em B e sua subárvore
direita, em C.direita, em C.
1. Árvores Binárias1. Árvores Binárias
raiz
subárvore
esquerda
subárvore
direita
5. 10/10/13
5
• Exemplos de estruturas que não são arvores:Exemplos de estruturas que não são arvores:
1. Árvores Binárias1. Árvores Binárias
6. 10/10/13
6
• A subárvore esquerda da árvore binária enraizada emA subárvore esquerda da árvore binária enraizada em CC
e a subárvore direita da árvore binária enraizada eme a subárvore direita da árvore binária enraizada em EE
estão, ambas,estão, ambas, vaziasvazias..
1. Árvores Binárias1. Árvores Binárias
7. 10/10/13
7
• As árvores binárias enraizadas emAs árvores binárias enraizadas em DD,, GG,, HH ee II têmtêm
subárvores direita e esquerda vazias.subárvores direita e esquerda vazias.
1. Árvores Binárias1. Árvores Binárias
8. 10/10/13
8
• SeSe AA é aé a raizraiz de uma árvore binária e B/C é a raiz dede uma árvore binária e B/C é a raiz de
suasua subárvore esquerda/direitasubárvore esquerda/direita, então diz-se que A é, então diz-se que A é
oo paipai de B/C e que B/C é o filhode B/C e que B/C é o filho esquerdoesquerdo//direitodireito de A.de A.
1. Árvores Binárias1. Árvores Binárias
Pai de
B e C
Filho esquerdo
de A
Filho direito
de A
9. 10/10/13
9
• Um nó sem filhos (como D, G, H ou I) é chamadoUm nó sem filhos (como D, G, H ou I) é chamado folhafolha..
1. Árvores Binárias1. Árvores Binárias
10. 10/10/13
10
• O nó n1 é umO nó n1 é um ancestralancestral do nó n2 (e n2 é umdo nó n2 (e n2 é um
descendentedescendente de n1), se n1 for o pai de n2 ou o pai dede n1), se n1 for o pai de n2 ou o pai de
algum ancestral de n2.algum ancestral de n2.
1. Árvores Binárias1. Árvores Binárias
11. 10/10/13
11
• A é um ancestral de G e G é um descendente de A.A é um ancestral de G e G é um descendente de A.
1. Árvores Binárias1. Árvores Binárias
12. 10/10/13
12
• H é um descendente de C e C é um anncestral de H.H é um descendente de C e C é um anncestral de H.
1. Árvores Binárias1. Árvores Binárias
13. 10/10/13
13
• Mas E não é nem ancestral nem descendente de C.Mas E não é nem ancestral nem descendente de C.
1. Árvores Binárias1. Árvores Binárias
14. 10/10/13
14
• Um nó n2 é umUm nó n2 é um descendente esquerdodescendente esquerdo do nó n1 sedo nó n1 se
n2 for o filho esquerdo de n1 ou um descendente do filhon2 for o filho esquerdo de n1 ou um descendente do filho
esquerdo de n1.esquerdo de n1.
1. Árvores Binárias1. Árvores Binárias
15. 10/10/13
15
• B, D, E e G são descendentes esquerdos de A.B, D, E e G são descendentes esquerdos de A.
1. Árvores Binárias1. Árvores Binárias
16. 10/10/13
16
• Um nó n2 é umUm nó n2 é um descendente direitodescendente direito do nó n1 se n2do nó n1 se n2
for o filho direito de n1 ou um descendente do filho direitofor o filho direito de n1 ou um descendente do filho direito
de n1.de n1.
1. Árvores Binárias1. Árvores Binárias
17. 10/10/13
17
• C, F, H e I são descendentes direitos de A.C, F, H e I são descendentes direitos de A.
1. Árvores Binárias1. Árvores Binárias
18. 10/10/13
18
• Dois nós sãoDois nós são irmãosirmãos se forem filhos esquerdo e direitose forem filhos esquerdo e direito
do mesmo pai, comodo mesmo pai, como B e CB e C, D e E, H e I., D e E, H e I.
1. Árvores Binárias1. Árvores Binárias
19. 10/10/13
19
• Dois nós sãoDois nós são irmãosirmãos se forem filhos esquerdo e direitose forem filhos esquerdo e direito
do mesmo pai, como B e C,do mesmo pai, como B e C, D e ED e E, H e I., H e I.
1. Árvores Binárias1. Árvores Binárias
20. 10/10/13
20
• Dois nós sãoDois nós são irmãosirmãos se forem filhos esquerdo e direitose forem filhos esquerdo e direito
do mesmo pai, como B e C, D e E,do mesmo pai, como B e C, D e E, H e IH e I..
1. Árvores Binárias1. Árvores Binárias
21. 10/10/13
21
• O sentido da raiz para as folhas é "para baixo" e oO sentido da raiz para as folhas é "para baixo" e o
sentido oposto é "para cima".sentido oposto é "para cima".
1. Árvores Binárias1. Árvores Binárias
22. 10/10/13
22
• O sentido da raiz para as folhas é "para baixo" e oO sentido da raiz para as folhas é "para baixo" e o
sentido oposto é "para cima".sentido oposto é "para cima".
1. Árvores Binárias1. Árvores Binárias
Para baixo:
Raiz Folhas
Para cima:
Folhas Raiz
23. 10/10/13
23
• Quando você percorre uma árvore a partir das folhas naQuando você percorre uma árvore a partir das folhas na
direção da raiz, diz-se que você está "subindo" a árvore, edireção da raiz, diz-se que você está "subindo" a árvore, e
se partir da raiz para as folhas, você está "descendo" ase partir da raiz para as folhas, você está "descendo" a
árvore.árvore.
1. Árvores Binárias1. Árvores Binárias
descendo
subindo
24. 10/10/13
24
• Se todo nó que não é folha numa árvore binária tiverSe todo nó que não é folha numa árvore binária tiver
subárvores esquerda e direita não-vazias, a árvore serásubárvores esquerda e direita não-vazias, a árvore será
considerada uma árvoreconsiderada uma árvore estritamente bináriaestritamente binária..
1. Árvores Binárias1. Árvores Binárias
25. 10/10/13
25
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempresempre 2n - 12n - 1 nós.nós.
1. Árvores Binárias1. Árvores Binárias
26. 10/10/13
26
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempresempre 2n - 12n - 1 nós. Exemplo:nós. Exemplo: n = 4 folhasn = 4 folhas
1. Árvores Binárias1. Árvores Binárias
27. 10/10/13
27
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempresempre 2n - 12n - 1 nós. Exemplo: n = 4 folhasnós. Exemplo: n = 4 folhas 7 nós7 nós..
1. Árvores Binárias1. Árvores Binárias
28. 10/10/13
28
• OO nívelnível de um nó numa árvore binária é definido comode um nó numa árvore binária é definido como
segue: asegue: a raizraiz da árvore temda árvore tem nível 0nível 0, e o nível de qualquer, e o nível de qualquer
outro nó na árvore é um nível a mais que o nível de seuoutro nó na árvore é um nível a mais que o nível de seu
pai.pai.
1. Árvores Binárias1. Árvores Binárias
29. 10/10/13
29
• OO nívelnível de um nó numa árvore binária é definido comode um nó numa árvore binária é definido como
segue: asegue: a raizraiz da árvore temda árvore tem nível 0nível 0, e o nível de qualquer, e o nível de qualquer
outro nó na árvore é um nível a mais que o nível de seuoutro nó na árvore é um nível a mais que o nível de seu
pai.pai.
1. Árvores Binárias1. Árvores Binárias
Nível 0
Nível 1
Nível 2
Nível 3
30. 10/10/13
30
• AA profundidadeprofundidade de uma árvore binária significa o nívelde uma árvore binária significa o nível
máximo de qualquer folha na árvore. Isso equivale aomáximo de qualquer folha na árvore. Isso equivale ao
tamanho do percurso mais distante da raiz até qualquertamanho do percurso mais distante da raiz até qualquer
folha.folha.
1. Árvores Binárias1. Árvores Binárias
31. 10/10/13
31
• AA profundidadeprofundidade de uma árvore binária significa o nívelde uma árvore binária significa o nível
máximo de qualquer folha na árvore. Isso equivale aomáximo de qualquer folha na árvore. Isso equivale ao
tamanho do percurso mais distante da raiz até qualquertamanho do percurso mais distante da raiz até qualquer
folha.folha.
1. Árvores Binárias1. Árvores Binárias
Profundidade 3
32. 10/10/13
32
• UmaUma árvore binária completaárvore binária completa de profundidadede profundidade dd é aé a
árvoreárvore estritamente bináriaestritamente binária em que todas as folhasem que todas as folhas
estejam no nívelestejam no nível dd..
1. Árvores Binárias1. Árvores Binárias
33. 10/10/13
33
• Se uma árvore binária contiverSe uma árvore binária contiver mm nós no nívelnós no nível LL, ela, ela
conterá no máximoconterá no máximo 2m2m nós no nívelnós no nível L + 1L + 1..
1. Árvores Binárias1. Árvores Binárias
34. 10/10/13
34
• Uma árvore binária completa de profundidadeUma árvore binária completa de profundidade dd contémcontém
exatamenteexatamente 22LL
nós em cada nívelnós em cada nível LL entreentre 00 ee dd..
1. Árvores Binárias1. Árvores Binárias
35. 10/10/13
35
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
1. Árvores Binárias1. Árvores Binárias
∑=
=++++=
d
i
id
tn
0
210
22...222
36. 10/10/13
36
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
1. Árvores Binárias1. Árvores Binárias
1222...222 1
0
210
−==++++= +
=
∑ d
d
i
id
tn
37. 10/10/13
37
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
• Prova por indução:Prova por indução:
1. Mostrar que o enunciado vale para a base da1. Mostrar que o enunciado vale para a base da
indução,indução, d = 0d = 0::
1. Árvores Binárias1. Árvores Binárias
11212
120
101
0
=−=−=
==→=
++d
tnd
1222...222 1
0
210
−==++++= +
=
∑ d
d
i
id
tn
38. 10/10/13
38
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
• Prova por indução:Prova por indução:
2. Por hipótese de indução, vamos assumir que a2. Por hipótese de indução, vamos assumir que a
equação vale paraequação vale para d = k-1d = k-1::
1. Árvores Binárias1. Árvores Binárias
1212
2...2221
1)1(
1210
−=−=
++++=→−=
+−
−
kk
k
tnkd
1222...222 1
0
210
−==++++= +
=
∑ d
d
i
id
tn
39. 10/10/13
39
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
• Prova por indução:Prova por indução:
3. Dada a hipótese de indução anterior, mostramos3. Dada a hipótese de indução anterior, mostramos
que a equação vale paraque a equação vale para d = kd = k (basta somar 2(basta somar 2kk
emem
ambos os lados da equação)ambos os lados da equação)::
1. Árvores Binárias1. Árvores Binárias
12122212
22...222
1
1210
−=−⋅=+−=
+++++=→=
+
−
kkkk
kk
tnkd
1222...222 1
0
210
−==++++= +
=
∑ d
d
i
id
tn
40. 10/10/13
40
• O número total de nós,O número total de nós, tn,tn, numa árvore binária completanuma árvore binária completa
de profundidadede profundidade dd é igual à soma do número de nós emé igual à soma do número de nós em
cada nível entre 0 e d.cada nível entre 0 e d.
• Prova por indução:Prova por indução:
3. Dada a hipótese de indução anterior, mostramos3. Dada a hipótese de indução anterior, mostramos
que a equação vale paraque a equação vale para d = kd = k (basta somar 2(basta somar 2kk
emem
ambos os lados da equação)ambos os lados da equação)::
1. Árvores Binárias1. Árvores Binárias
12122212
22...222
1
1210
−=−⋅=+−=
+++++=→=
+
−
kkkk
kk
tnkd
1222...222 1
0
210
−==++++= +
=
∑ d
d
i
id
tn
41. 10/10/13
41
• Como todas as folhas nesta árvore estão no nívelComo todas as folhas nesta árvore estão no nível dd, a, a
árvore contémárvore contém 22dd
folhas efolhas e 22dd
-1-1 nós que não são folhas.nós que não são folhas.
1. Árvores Binárias1. Árvores Binárias
42. 10/10/13
42
• Se o número de nós,Se o número de nós, tntn, numa árvore binária completa, numa árvore binária completa
for conhecido, poderemos calcular sua profundidade,for conhecido, poderemos calcular sua profundidade, dd..
1. Árvores Binárias1. Árvores Binárias
1)1(log
1)1(log
)2(log)1(log
21
12
2
2
1
22
1
1
−+=
+=+
=+
=+
−=
+
+
+
tnd
dtn
tn
tn
tn
d
d
d
43. 10/10/13
43
• Embora uma árvore binária completa contenha muitosEmbora uma árvore binária completa contenha muitos
nós, a distância da raiz até qualquer folha (a profundidadenós, a distância da raiz até qualquer folha (a profundidade
da árvore) é relativamente pequena.da árvore) é relativamente pequena.
• SuponhaSuponha tntn=1023 nós. A profundidade da árvore é dada=1023 nós. A profundidade da árvore é dada
por:por:
1. Árvores Binárias1. Árvores Binárias
91)11023(log2 =−+=d
44. 10/10/13
44
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binária quase completabinária quase completa se:se:
1.1. Todos os nós que estiverem em níveis inferiores aTodos os nós que estiverem em níveis inferiores a
d-1d-1 possuem dois filhos.possuem dois filhos.
2. Para cada nó2. Para cada nó ndnd na árvore com um descendentena árvore com um descendente
direito no níveldireito no nível dd, todos os descendentes esquerdos, todos os descendentes esquerdos
dede ndnd que forem folhas estiverem também no nívelque forem folhas estiverem também no nível
dd (ou seja, apenas os nós mais a direita podem(ou seja, apenas os nós mais a direita podem
estar ausentes no nívelestar ausentes no nível dd).).
1. Árvores Binárias1. Árvores Binárias
45. 10/10/13
45
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binária quase completabinária quase completa se:se:
1.1. Todos os nós que estiverem em níveis inferiores aTodos os nós que estiverem em níveis inferiores a
d-1d-1 possuem dois filhos.possuem dois filhos.
2. Para cada nó2. Para cada nó ndnd na árvore com um descendentena árvore com um descendente
direito no níveldireito no nível dd, todos os descendentes esquerdos, todos os descendentes esquerdos
dede ndnd que forem folhas estiverem também no nívelque forem folhas estiverem também no nível
d.d.
1. Árvores Binárias1. Árvores Binárias
Viola
a condição 1.
d
d-1
46. 10/10/13
46
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binária quase completabinária quase completa se:se:
1.1. Todos os nós que estiverem em níveis inferiores aTodos os nós que estiverem em níveis inferiores a
d-1d-1 possuem dois filhos.possuem dois filhos.
2. Para cada nó2. Para cada nó ndnd na árvore com um descendentena árvore com um descendente
direito no níveldireito no nível dd, todos os descendentes esquerdos, todos os descendentes esquerdos
dede ndnd que forem folhas estiverem também no nívelque forem folhas estiverem também no nível
dd..
1. Árvores Binárias1. Árvores Binárias
Viola
a condição 2.
A tem um descendente
direito no nível d (J) e um
descendente esquerdo que
é uma folha mas não está
no nível d (E).
d
47. 10/10/13
47
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binária quase completabinária quase completa se:se:
1.1. Todos os nós que estiverem em níveis inferiores aTodos os nós que estiverem em níveis inferiores a
d-1d-1 possuem dois filhos.possuem dois filhos.
2. Para cada nó2. Para cada nó ndnd na árvore com um descendentena árvore com um descendente
direito no níveldireito no nível dd, todos os descendentes esquerdos, todos os descendentes esquerdos
dede ndnd que forem folhas estiverem também no nívelque forem folhas estiverem também no nível
dd..
1. Árvores Binárias1. Árvores Binárias
Atendem às
condições
1 e 2.
48. 10/10/13
48
• É necessário observar que vários livros utilizamÉ necessário observar que vários livros utilizam
nomenclatura diversa daquela que foi aqui empregada.nomenclatura diversa daquela que foi aqui empregada.
• Utilizaremos, porém, as expressões "Utilizaremos, porém, as expressões "estritamenteestritamente
bináriabinária", "", "completacompleta", "", "quase completaquase completa", conforme", conforme
definido anteriormente.definido anteriormente.
• Os nós de uma árvore binária quase completa podem serOs nós de uma árvore binária quase completa podem ser
numerados:numerados:
Atribui-seAtribui-se o número 1 à raizo número 1 à raiz;;
UmUm filho esquerdofilho esquerdo recebe a atribuição de umrecebe a atribuição de um
número equivalente aonúmero equivalente ao dobro do número atribuído adobro do número atribuído a
seu paiseu pai; e; e
UmUm filho direitofilho direito recebe a atribuição de um númerorecebe a atribuição de um número
equivalente aoequivalente ao dobro do número atribuído a seudobro do número atribuído a seu
pai mais umpai mais um..
1. Árvores Binárias1. Árvores Binárias
49. 10/10/13
49
• Exemplos de numeração de árvores binárias quaseExemplos de numeração de árvores binárias quase
completas:completas:
1. Árvores Binárias1. Árvores Binárias
50. 10/10/13
50
• Uma árvore estritamente binária quase completa comUma árvore estritamente binária quase completa com nn
folhas temfolhas tem 2n - 12n - 1 nós.nós.
1. Árvores Binárias1. Árvores Binárias
51. 10/10/13
51
• Uma árvore estritamente binária quase completa comUma árvore estritamente binária quase completa com nn
folhas temfolhas tem 2n - 12n - 1 nós.nós.
Exemplo: n = 5 folhasExemplo: n = 5 folhas 9 nós.9 nós.
1. Árvores Binárias1. Árvores Binárias
52. 10/10/13
52
• Uma árvore binária quase completa com n folhas, queUma árvore binária quase completa com n folhas, que
não seja estritamente binária, tem 2n nós.não seja estritamente binária, tem 2n nós.
1. Árvores Binárias1. Árvores Binárias
53. 10/10/13
53
• Uma árvore binária quase completa com n folhas, queUma árvore binária quase completa com n folhas, que
não seja estritamente binária, tem 2n nós.não seja estritamente binária, tem 2n nós.
Exemplo: n = 5 folhasExemplo: n = 5 folhas 10 nós.10 nós.
1. Árvores Binárias1. Árvores Binárias
54. 10/10/13
54
• Existem duas árvores binárias quase completas distintasExistem duas árvores binárias quase completas distintas
com n folhas, umas das quais é estritamente binária e acom n folhas, umas das quais é estritamente binária e a
outra não.outra não.
1. Árvores Binárias1. Árvores Binárias
55. 10/10/13
55
• Existe uma única árvore binária quase completa com nExiste uma única árvore binária quase completa com n
nós.nós.
Essa árvore será estritamente binária se e somenteEssa árvore será estritamente binária se e somente
se n for ímpar.se n for ímpar.
1. Árvores Binárias1. Árvores Binárias
Essa é a única árvore binária
quase completa com nove nós. E
é estritamente binária porque 9 é
ímpar.
56. 10/10/13
56
• Existe uma única árvore binária quase completa com nExiste uma única árvore binária quase completa com n
nós.nós.
Essa árvore não será estritamente binária se eEssa árvore não será estritamente binária se e
somente se n for par.somente se n for par.
1. Árvores Binárias1. Árvores Binárias
Essa é a única árvore binária
quase completa com dez nós. E
não é estritamente binária
porque 10 é par.
57. 10/10/13
57
• Uma árvore binária quase completa de profundidade d éUma árvore binária quase completa de profundidade d é
intermediária entre a árvore binária completa deintermediária entre a árvore binária completa de
profundidade d-1, que contém 2profundidade d-1, que contém 2dd
- 1 nós, e a árvore binária- 1 nós, e a árvore binária
completa de profundidade d, que contém 2completa de profundidade d, que contém 2d+1d+1
–1 nós. Veja–1 nós. Veja
o exemplo abaixo para d = 3.o exemplo abaixo para d = 3.
1. Árvores Binárias1. Árvores Binárias
Árvore binária completa
de profundidade d-1:
22dd
-1 nós.-1 nós.
Árvore binária completa
de profundidade d: 22d+1d+1
–1–1
nós.nós.
Árvore binária quase
completa de profundidade
d: 22dd
- 1- 1 < n < : 22d+1d+1
–1 nós.–1 nós.
58. 10/10/13
58
• SeSe tntn representa o número total de nós numa árvorerepresenta o número total de nós numa árvore
binária quase completa, sua profundidade é dada por:binária quase completa, sua profundidade é dada por:
• Exemplo:Exemplo: tn =tn = 10 nós.10 nós.
1. Árvores Binárias1. Árvores Binárias
)(log2 tnd =
33.3219)10(log2 ===d
59. 10/10/13
59
• SeSe pp é um ponteiro para um nóé um ponteiro para um nó ndnd de uma árvorede uma árvore
binária, a funçãobinária, a função info(p)info(p) retorna o conteúdo deretorna o conteúdo de ndnd..
• As funçõesAs funções left(p)left(p),, right(p)right(p),, father(p)father(p) ee brother(p)brother(p),,
retornam ponteiros para o filhos esquerdo, direito, para oretornam ponteiros para o filhos esquerdo, direito, para o
pai e para o irmão depai e para o irmão de ndnd..
• As funções retornam NULL seAs funções retornam NULL se ndnd não tiver filho esquerdo,não tiver filho esquerdo,
filho esquerdo, pai ou irmão.filho esquerdo, pai ou irmão.
• As funções lógicasAs funções lógicas isleft(p)isleft(p) ee isright(p)isright(p) retornam oretornam o
valor TRUE sevalor TRUE se ndnd for um filho esquerdo ou direito,for um filho esquerdo ou direito,
respectivamente, de algum outro nó na árvore, e FALSE,respectivamente, de algum outro nó na árvore, e FALSE,
caso contrário.caso contrário.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
60. 10/10/13
60
• maketree(x)maketree(x) cria uma árvore binária consistindo numcria uma árvore binária consistindo num
único nó com o campo de informação x e retorna umúnico nó com o campo de informação x e retorna um
ponteiro para esse nó.ponteiro para esse nó.
• setleft(p, x)setleft(p, x) aceita um ponteiroaceita um ponteiro pp para um nó de umapara um nó de uma
árvore e define um outro nó com o conteúdo x como filhoárvore e define um outro nó com o conteúdo x como filho
esquerdo deesquerdo de node(p)node(p)..
• setright(p, x)setright(p, x) aceita um ponteiroaceita um ponteiro pp para um nó de umapara um nó de uma
árvore e define um outro nó com o conteúdo x como filhoárvore e define um outro nó com o conteúdo x como filho
direito dedireito de node(p)node(p)..
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
61. 10/10/13
61
• Outra operação comum éOutra operação comum é percorrerpercorrer uma árvore binária,uma árvore binária,
ou seja, percorrer a árvore enumerando cada um de seusou seja, percorrer a árvore enumerando cada um de seus
nós uma vez.nós uma vez.
• Falamos emFalamos em visitarvisitar cada nó à medida que ele écada nó à medida que ele é
enumerado.enumerado.
• Serão definidos três métodos:Serão definidos três métodos:
EmEm pré-ordempré-ordem ou percurso em profundidade;ou percurso em profundidade;
EmEm ordemordem ou ordem simétrica; eou ordem simétrica; e
EmEm pós-ordempós-ordem..
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
62. 10/10/13
62
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
63. 10/10/13
63
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
X
X
64. 10/10/13
64
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-Percorremos a subárvore esquerda em pré-
ordem;ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
XYY
65. 10/10/13
65
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-Percorremos a subárvore direita em pré-
ordem.ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
XYZ
Z
66. 10/10/13
66
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
A
67. 10/10/13
67
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
AB
68. 10/10/13
68
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABD
69. 10/10/13
69
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDG
70. 10/10/13
70
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDGC
71. 10/10/13
71
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDGCE
72. 10/10/13
72
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDGCEH
73. 10/10/13
73
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDGCEHI
74. 10/10/13
74
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABDGCEHIF
75. 10/10/13
75
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
A
76. 10/10/13
76
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
AB
77. 10/10/13
77
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABC
78. 10/10/13
78
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCE
79. 10/10/13
79
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEI
80. 10/10/13
80
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIF
81. 10/10/13
81
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJ
82. 10/10/13
82
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJD
83. 10/10/13
83
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJDG
84. 10/10/13
84
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJDGH
85. 10/10/13
85
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJDGHK
86. 10/10/13
86
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Visitamos a raiz;
2.2. Percorremos a subárvore esquerda em pré-ordem;Percorremos a subárvore esquerda em pré-ordem;
3.3. Percorremos a subárvore direita em pré-ordem.Percorremos a subárvore direita em pré-ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
ABCEIFJDGHKL
87. 10/10/13
87
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
88. 10/10/13
88
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YY
89. 10/10/13
89
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YX
X
90. 10/10/13
90
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YXZ
Z
91. 10/10/13
91
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
D
92. 10/10/13
92
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DG
93. 10/10/13
93
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGB
94. 10/10/13
94
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBA
95. 10/10/13
95
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBA
96. 10/10/13
96
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBAH
97. 10/10/13
97
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBAHE
98. 10/10/13
98
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBAHEIC
99. 10/10/13
99
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBAHEIC
100. 10/10/13
100
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
DGBAHEICF
101. 10/10/13
101
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
E
102. 10/10/13
102
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EI
103. 10/10/13
103
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICF
104. 10/10/13
104
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICF
105. 10/10/13
105
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJ
106. 10/10/13
106
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJB
107. 10/10/13
107
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBG
108. 10/10/13
108
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBGD
109. 10/10/13
109
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBGDK
110. 10/10/13
110
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBGDKH
111. 10/10/13
111
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBGDKHL
112. 10/10/13
112
• Em ordem ou ordem simétrica:Em ordem ou ordem simétrica:
1.1. Percorremos a subárvore esquerda em ordem;Percorremos a subárvore esquerda em ordem;
2.2. Visitamos a raiz;Visitamos a raiz;
3.3. Percorremos a subárvore direita em ordem.Percorremos a subárvore direita em ordem.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
EICFJBGDKHLA
113. 10/10/13
113
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
114. 10/10/13
114
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-Percorremos a subárvore esquerda em pós-
ordem;ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YY
115. 10/10/13
115
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-Percorremos a subárvore direita em pós-
ordem; eordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YZZ
116. 10/10/13
116
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
YZX
X
117. 10/10/13
117
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
118. 10/10/13
118
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
G
119. 10/10/13
119
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GD
120. 10/10/13
120
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDB
121. 10/10/13
121
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBH
122. 10/10/13
122
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBHI
123. 10/10/13
123
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBHIE
124. 10/10/13
124
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBHIEF
125. 10/10/13
125
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBHIEFC
126. 10/10/13
126
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
GDBHIEFCA
127. 10/10/13
127
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
128. 10/10/13
128
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
129. 10/10/13
129
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
I
130. 10/10/13
130
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IE
131. 10/10/13
131
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJ
132. 10/10/13
132
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJF
133. 10/10/13
133
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFC
134. 10/10/13
134
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCG
135. 10/10/13
135
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGK
136. 10/10/13
136
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGKL
137. 10/10/13
137
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGKLH
138. 10/10/13
138
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGKLHD
139. 10/10/13
139
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGKLHDB
140. 10/10/13
140
• Em pós-ordem:Em pós-ordem:
1.1. Percorremos a subárvore esquerda em pós-ordem;Percorremos a subárvore esquerda em pós-ordem;
2.2. Percorremos a subárvore direita em pós-ordem; ePercorremos a subárvore direita em pós-ordem; e
3.3. Visitamos a raiz.Visitamos a raiz.
2. Operações Sobre Árvores Binárias2. Operações Sobre Árvores Binárias
IEJFCGKLHDBA
141. 10/10/13
141
• É uma estrutura de dados útil quando precisam serÉ uma estrutura de dados útil quando precisam ser
tomadas decisões bidirecionais em cada ponto de umtomadas decisões bidirecionais em cada ponto de um
processo.processo.
• Exemplo: encontrar repetições numa lista de números.Exemplo: encontrar repetições numa lista de números.
Uma maneira de se fazer isso é comparar cadaUma maneira de se fazer isso é comparar cada
número com todos os que o precedem.número com todos os que o precedem.
Entretanto, isso envolve um grande número deEntretanto, isso envolve um grande número de
comparações.comparações.
O número de comparações pode ser reduzidoO número de comparações pode ser reduzido
usando-se uma árvore binária.usando-se uma árvore binária.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
156. 10/10/13
156
• Um nó pode ser definido por:Um nó pode ser definido por:
struct nodetype {struct nodetype {
int info;int info;
struct nodetype *left;struct nodetype *left;
struct nodetype *right;struct nodetype *right;
struct nodetype *father;struct nodetype *father;
}}
typedef struct nodetype *NODEPTR;typedef struct nodetype *NODEPTR;
• As operaçõesAs operações info(p)info(p),, left(p), right(p)left(p), right(p) ee father(p)father(p) seriamseriam
implementadas por referência aimplementadas por referência a p->info, p->left, p->right,p->info, p->left, p->right,
p->fatherp->father..
• As rotinasAs rotinas getnodegetnode ee freenodefreenode alocam nós usando asalocam nós usando as
rotinas malloc e free.rotinas malloc e free.
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
158. 10/10/13
158
• setleft():setleft():
setleft(NODEPTR p, int x){setleft(NODEPTR p, int x){
if (p == NULL)if (p == NULL)
printf("Insercao vazian");printf("Insercao vazian");
else if (p->left != NULL)else if (p->left != NULL)
printf("Insercao incorretan");printf("Insercao incorretan");
elseelse
p->left = maketree(x);p->left = maketree(x);
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
159. 10/10/13
159
• setright():setright():
setright(NODEPTR p, int x){setright(NODEPTR p, int x){
if (p == NULL)if (p == NULL)
printf("Insercao vazian");printf("Insercao vazian");
else if (p->right != NULL)else if (p->right != NULL)
printf("Insercao incorretan");printf("Insercao incorretan");
elseelse
p->right = maketree(x);p->right = maketree(x);
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
160. 10/10/13
160
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
• Lembrando:Lembrando:
NODEPTR getnode(){NODEPTR getnode(){
NODEPTR no;NODEPTR no;
no = (NODEPTR)malloc(sizeof(struct nodetype));no = (NODEPTR)malloc(sizeof(struct nodetype));
return no;return no;
}}
void freenode(NODEPTR no){void freenode(NODEPTR no){
free(no);free(no);
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
161. 10/10/13
161
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
int main(){int main(){
NODEPTR ptree;NODEPTR ptree;
NODEPTR p, q;NODEPTR p, q;
int number;int number;
printf("Digite:n");printf("Digite:n");
scanf("%d", &number);scanf("%d", &number);
ptree = maketree(number);ptree = maketree(number);
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
162. 10/10/13
162
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
while (number != -1) {while (number != -1) {
scanf("%d", &number);scanf("%d", &number);
/* p e q serão utilizados no percurso da árvore. p/* p e q serão utilizados no percurso da árvore. p
aponta para um nó pai e q aponta seu filho direito ouaponta para um nó pai e q aponta seu filho direito ou
esquerdo. */esquerdo. */
p = q = ptree;p = q = ptree;
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
163. 10/10/13
163
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
/* A árvore é percorrida até encontrar a primeira/* A árvore é percorrida até encontrar a primeira
ocorência do número anteriormente digitado ou encontrarocorência do número anteriormente digitado ou encontrar
um ponteiro left ou right NULO. */um ponteiro left ou right NULO. */
while (number != p->info && q != NULL) {while (number != p->info && q != NULL) {
p = q;p = q;
if (number < p->info)if (number < p->info)
q = p->left;q = p->left;
elseelse
q = p->right;q = p->right;
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
164. 10/10/13
164
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
/* Se o laço anterior foi interrompido devido a (number/* Se o laço anterior foi interrompido devido a (number
== p->info), deve indicar que o número já ocorreu antes== p->info), deve indicar que o número já ocorreu antes
if (number == p->info)if (number == p->info)
printf(“%d ja ocorreu.nDigite:n", number);printf(“%d ja ocorreu.nDigite:n", number);
/* Se o laço for interrompido devido a q == NULL, a/* Se o laço for interrompido devido a q == NULL, a
árvore foi toda percorrida e o número não foiárvore foi toda percorrida e o número não foi
encontrado. Nesse caso, deve ser incluído como filhoencontrado. Nesse caso, deve ser incluído como filho
direito ou esquerdo de p.direito ou esquerdo de p.
else if (number < p->info)else if (number < p->info)
setleft(p, number);setleft(p, number);
elseelse
setright(p, number);setright(p, number);
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
165. 10/10/13
165
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positivos.positivos.
system("PAUSE");system("PAUSE");
return 0;return 0;
}}
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
166. 10/10/13
166
• Ficará como exercícios implementa o percurso de árvoresFicará como exercícios implementa o percurso de árvores
binárias em:binárias em:
pré-ordem;pré-ordem;
ordem; eordem; e
pós-ordem.pós-ordem.
• Modificar o exemplo anterior de forma que o usuárioModificar o exemplo anterior de forma que o usuário
possa escolher imprimir a árvore de acordo com aspossa escolher imprimir a árvore de acordo com as
definições de percurso acima.definições de percurso acima.
5. Percursos de Árvores Binárias5. Percursos de Árvores Binárias
167. 10/10/13
167
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA 010100010000000111010 21 bits
3 bits/símbolo
• Codificação:Codificação:
168. 10/10/13
168
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA 00010010101100 14 bits
2 bits/símbolo
• Codificação:Codificação:
169. 10/10/13
169
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA 0110010101110 13 bits
1,86 bit/símbolo
• Codificação:Codificação:
170. 10/10/13
170
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Decodificação:Decodificação:
• Varremos a string de bits da esquerda para a direita.Varremos a string de bits da esquerda para a direita.
• Se for encontrado um 0 como primeiro bit, o símboloSe for encontrado um 0 como primeiro bit, o símbolo
será um A; caso contrário, ele será um B, C ou D.será um A; caso contrário, ele será um B, C ou D.
• Se o segundo bit for um 0, o símbolo será um C;Se o segundo bit for um 0, o símbolo será um C;
caso contrário, ele deve ser um B ou um D.caso contrário, ele deve ser um B ou um D.
• Se o terceiro bit for um 0, o símbolo será um B; seSe o terceiro bit for um 0, o símbolo será um B; se
for um 1, o símbolo será um D.for um 1, o símbolo será um D.
• Assim que o primeiro símbolo for identificado, oAssim que o primeiro símbolo for identificado, o
processo será repetido a partir do bit seguinte paraprocesso será repetido a partir do bit seguinte para
encontrar o segundo símbolo.encontrar o segundo símbolo.
171. 10/10/13
171
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho variável utilizando oComo gerar um código de tamanho variável utilizando o
algoritmo de Huffman?algoritmo de Huffman?
• Exemplo: ABACCDAExemplo: ABACCDA
A - 3A - 3 B - 1B - 1 BD - 2BD - 2 CBD - 4 ACBD - 7CBD - 4 ACBD - 7
B - 1B - 1 D - 1D - 1
C - 2C - 2 C - 2C - 2 C - 2C - 2
D - 1D - 1 A - 3 A - 3 A - 3A - 3 A - 3 A - 3
172. 10/10/13
172
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho variável utilizando oComo gerar um código de tamanho variável utilizando o
algoritmo de Huffman?algoritmo de Huffman?
• Exemplo: ABACCDAExemplo: ABACCDA
A - 3A - 3 B - 1B - 1 BD - 2BD - 2 CBD - 4 ACBD - 7CBD - 4 ACBD - 7
B - 1B - 1 D - 1D - 1
C - 2C - 2 C - 2C - 2 C - 2C - 2
D - 1D - 1 A - 3 A - 3 A - 3A - 3 A - 3 A - 3
00 11
00 11
00 11
173. 10/10/13
173
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho variável utilizando oComo gerar um código de tamanho variável utilizando o
algoritmo de Huffman?algoritmo de Huffman?
• Exemplo: ABACCDAExemplo: ABACCDA
A - 3A - 3 B - 1B - 1 BD - 2BD - 2 CBD - 4 ACBD - 7CBD - 4 ACBD - 7
B - 1B - 1 D - 1D - 1
C - 2C - 2 C - 2C - 2 C - 2C - 2
D - 1D - 1 A - 3 A - 3 A - 3A - 3 A - 3 A - 3
00 11
00 11
00 11
174. 10/10/13
174
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Ficará com exercício para o aluno a implementação deFicará com exercício para o aluno a implementação de
um código que, dados o conjunto de símbolos a seremum código que, dados o conjunto de símbolos a serem
codificados e a freqüência de ocorrência de cada um deles,codificados e a freqüência de ocorrência de cada um deles,
gera os códigos de tamanho variável para cada símbolo porgera os códigos de tamanho variável para cada símbolo por
meio do algoritmo de Huffman.meio do algoritmo de Huffman.