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 es...
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...
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...
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. ...
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...
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 direi...
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...
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. ...
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...
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 ...
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. Árvore...
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 Bi...
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 es...
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á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 d...
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....
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
d...
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
d...
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
d...
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
senti...
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
senti...
10/10/13
23
• Quando você percorre uma árvore a partir das folhas naQuando você percorre uma árvore a partir das folhas na...
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...
10/10/13
25
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempres...
10/10/13
26
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempres...
10/10/13
27
• Uma árvore estritamente binária comUma árvore estritamente binária com nn folhas contémfolhas contém
sempres...
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...
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...
10/10/13
30
• AA profundidadeprofundidade de uma árvore binária significa o nívelde uma árvore binária significa o nível
m...
10/10/13
31
• AA profundidadeprofundidade de uma árvore binária significa o nívelde uma árvore binária significa o nível
m...
10/10/13
32
• UmaUma árvore binária completaárvore binária completa de profundidadede profundidade dd é aé a
árvoreárvore ...
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...
10/10/13
34
• Uma árvore binária completa de profundidadeUma árvore binária completa de profundidade dd contémcontém
exata...
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...
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...
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...
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...
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...
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...
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
ár...
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 ...
10/10/13
43
• Embora uma árvore binária completa contenha muitosEmbora uma árvore binária completa contenha muitos
nós, a ...
10/10/13
44
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binári...
10/10/13
45
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binári...
10/10/13
46
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binári...
10/10/13
47
• Uma árvore binária de profundidadeUma árvore binária de profundidade dd será umaserá uma árvoreárvore
binári...
10/10/13
48
• É necessário observar que vários livros utilizamÉ necessário observar que vários livros utilizam
nomenclatur...
10/10/13
49
• Exemplos de numeração de árvores binárias quaseExemplos de numeração de árvores binárias quase
completas:com...
10/10/13
50
• Uma árvore estritamente binária quase completa comUma árvore estritamente binária quase completa com nn
folh...
10/10/13
51
• Uma árvore estritamente binária quase completa comUma árvore estritamente binária quase completa com nn
folh...
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 s...
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 s...
10/10/13
54
• Existem duas árvores binárias quase completas distintasExistem duas árvores binárias quase completas distint...
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...
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...
10/10/13
57
• Uma árvore binária quase completa de profundidade d éUma árvore binária quase completa de profundidade d é
i...
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 q...
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çãobi...
10/10/13
60
• maketree(x)maketree(x) cria uma árvore binária consistindo numcria uma árvore binária consistindo num
único ...
10/10/13
61
• Outra operação comum éOutra operação comum é percorrerpercorrer uma árvore binária,uma árvore binária,
ou se...
10/10/13
62
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
63
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
64
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
65
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
66
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
67
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
68
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
69
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
70
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
71
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
72
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
73
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
74
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
75
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
76
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
77
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
78
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
79
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
80
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
81
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
82
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
83
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
84
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
85
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
10/10/13
86
• Em pré-ordem ou percurso em profundidade:Em pré-ordem ou percurso em profundidade:
1.1. Visitamos a raiz;Vis...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Perc...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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;Per...
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 esque...
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...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
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 esque...
10/10/13
141
• É uma estrutura de dados útil quando precisam serÉ uma estrutura de dados útil quando precisam ser
tomadas ...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Ár...
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 Árvo...
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 Ár...
10/10/13
156
• Um nó pode ser definido por:Um nó pode ser definido por:
struct nodetype {struct nodetype {
int info;int in...
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)
prin...
10/10/13
159
• setright():setright():
setright(NODEPTR p, int x){setright(NODEPTR p, int x){
if (p == NULL)if (p == NULL)
...
10/10/13
160
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
161
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
162
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
163
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
164
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
165
• Exemplo: verificar a repetição de números inteirosExemplo: verificar a repetição de números inteiros
positi...
10/10/13
166
• Ficará como exercícios implementa o percurso de árvoresFicará como exercícios implementa o percurso de árvo...
10/10/13
167
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA  010100010000000111010  ...
10/10/13
168
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA  00010010101100  14 bits...
10/10/13
169
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
ABACCDA  0110010101110  13 bits
...
10/10/13
170
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Decodificação:Decodificação:
• V...
10/10/13
171
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho ...
10/10/13
172
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho ...
10/10/13
173
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Como gerar um código de tamanho ...
10/10/13
174
6. Um Exemplo: O Algoritmo de Huffman6. Um Exemplo: O Algoritmo de Huffman
• Ficará com exercício para o alun...
Upcoming SlideShare
Loading in …5
×

Árvores binárias

2,188 views

Published on

Uma árvore binária é um conjunto finito de elementos que está vazio ou é particionado em três subconjuntos disjuntos:

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,188
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
150
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Árvores binárias

  1. 1. Arvore BinariaArvore Binaria ESTRUTURA DA DADOS 10/10/13 1
  2. 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. 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. 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. 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. 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. 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. 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. 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/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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

×