SlideShare una empresa de Scribd logo
1 de 174
Arvore BinariaArvore Binaria
ESTRUTURA DA DADOS
10/10/13 1
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
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
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
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
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
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
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
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/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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
10/10/13
142
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
10/10/13
143
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14 15>14
15
10/10/13
144
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
144<14
154
10/10/13
145
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
149<14
154
10/10/13
146
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
9>4 154
9
10/10/13
147
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
147<14
154
9
10/10/13
148
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
7>4 154
9
10/10/13
149
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
7<9
154
9
7
10/10/13
150
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14 18>14
154
9
7
10/10/13
151
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
18>15154
9
7
18
10/10/13
152
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
143<14
154
9
7
18
10/10/13
153
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
3<14 154
9
7
183
10/10/13
154
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
Prosseguindo...Prosseguindo...
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
154
9
7
183
10/10/13
155
• Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5.
3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias
14
154
9
7
183
2016
175
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
10/10/13
157
4. Representação de Nós de Árvores Binárias4. Representação de Nós de Árvores Binárias
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
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
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
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
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
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
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
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
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
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:
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:
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:
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.
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
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
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
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.

Más contenido relacionado

La actualidad más candente

Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte IDalton Martins
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxFrederico Madeira
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representaçãoFábio Andrade
 
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Leinylson Fontinele
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosLeinylson Fontinele
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoRademaker Siena
 
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos DiretóriosSistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos DiretóriosLuiz Arthur
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Leinylson Fontinele
 
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalResolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalVitor Hugo Melo Araújo
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeraçãoDaniel Moura
 
Unidade de medidas computacionais
Unidade de medidas computacionaisUnidade de medidas computacionais
Unidade de medidas computacionaisJosé Felipe
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 

La actualidad más candente (20)

Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte I
 
Sistema binario
Sistema binarioSistema binario
Sistema binario
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao Linux
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representação
 
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de Dados
 
Aula 06 - Sistema Binário
Aula 06 - Sistema BinárioAula 06 - Sistema Binário
Aula 06 - Sistema Binário
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos DiretóriosSistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
 
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalResolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
 
How To Save Your Marriage
How To Save Your MarriageHow To Save Your Marriage
How To Save Your Marriage
 
Apresentação árvore 2 3 4
Apresentação árvore 2 3 4Apresentação árvore 2 3 4
Apresentação árvore 2 3 4
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
 
Unidade de medidas computacionais
Unidade de medidas computacionaisUnidade de medidas computacionais
Unidade de medidas computacionais
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 

Último

Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 

Último (20)

Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 

Árvores binárias

  • 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
  • 142. 10/10/13 142 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14
  • 143. 10/10/13 143 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 15>14 15
  • 144. 10/10/13 144 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 144<14 154
  • 145. 10/10/13 145 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 149<14 154
  • 146. 10/10/13 146 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 9>4 154 9
  • 147. 10/10/13 147 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 147<14 154 9
  • 148. 10/10/13 148 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 7>4 154 9
  • 149. 10/10/13 149 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 7<9 154 9 7
  • 150. 10/10/13 150 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 18>14 154 9 7
  • 151. 10/10/13 151 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 18>15154 9 7 18
  • 152. 10/10/13 152 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 143<14 154 9 7 18
  • 153. 10/10/13 153 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 3<14 154 9 7 183
  • 154. 10/10/13 154 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. Prosseguindo...Prosseguindo... 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 154 9 7 183
  • 155. 10/10/13 155 • Exemplo:Exemplo: 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5. 3. Aplicações de Árvores Binárias3. Aplicações de Árvores Binárias 14 154 9 7 183 2016 175
  • 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
  • 157. 10/10/13 157 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.