Escolar Documentos
Profissional Documentos
Cultura Documentos
Ou é vazio;
B C
D E F G
H I J
Ou é vazio;
B C
D E F G
H I J
Ou é vazio;
B C
sub-árvore D E F G
esquerda
H I J
Ou é vazio;
B C
sub-árvore D E F G sub-árvore
esquerda direita
H I J
Ou é vazio;
B C
sub-árvore D E F G sub-árvore
esquerda direita
H I J
B B
B B
B B
B B
B B
B B
= 3!
B B
= 3! = 3!
B B
= 3! = 3! 2 * 3!
B B
= 3! = 3! 2 * 3! = 12 árvores
= 3!
= 3! = 3!
= 3! = 3! = 3!
= 3! = 3! = 3! = 3!
= 3! = 3! = 3! = 3! = 3!
= 3! = 3! = 3! = 3! = 3!
= 3! = 3! = 3! = 3! = 3!
5 * 3!
= 3! = 3! = 3! = 3! = 3!
5 * 3! = 30 árvores
B C
D E F G
B C
D E F G
a) 2i - 1
A
B C
D E F G
a) 2i - 1
i=1 A
B C
D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
B C
D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
i=2 B C
D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
22 - 1 = 2 i=2 B C
D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
22 - 1 = 2 i=2 B C
i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
22 - 1 = 2 i=2 B C
23 - 1 = 4 i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
22 - 1 = 2 i=2 B C
23 - 1 = 4 i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
b)
i=2 k=3
22 - 1 = 2 B C
23 - 1 = 4 i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
b)
i=2 k=3
22 - 1 = 2 B C
2k - 1
23 - 1 = 4 i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
b)
i=2 k=3
22 - 1 = 2 B C
2k - 1 = 23 - 1
23 - 1 = 4 i=3 D E F G
a) 2i - 1
21 - 1 = 1 i=1 A
b)
i=2 k=3
22 - 1 = 2 B C
2k - 1 = 23 - 1 = 7
23 - 1 = 4 i=3 D E F G
Chave
Apontador para o filho esquerdo desse nó.
D E F G
A F G
D E
A F G
D E
A F G
D E
B C
A F G
D E
B C
A F G
D E
B C
D E
A F G
D E
B C
D E F
A F G
D E
B C
D E F G
A F G
D E
B C
D E F G
1 1
1 1
1 1
2 3
1 1
2 3
1 1 1
2 3
1 1 1
2 3 2
1 1 1
2 3 2 3
1 1 1
2 3 2 3
1 1 1
2 3 2 3
4 5
1 1 1
2 3 2 3
4 5 6
1 1 1
2 3 2 3
4 5 6 7
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
nó x:
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
nó x:
▪ num( filho esquerdo de x ) = 2 * num( x )
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
nó x:
▪ num( filho esquerdo de x ) = 2 * num( x )
▪ num( filho direito de x ) = 2 * num( x ) + 1
Estrutura de Dados Prof. Marcos Alves 78
Definição: uma árvore binária completa é uma árvore binária de altura k e 2k – 1
nós.
Exemplos:
k=1 k=2 k=3
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
nó x:
▪ num( filho esquerdo de x ) = 2 * num( x ) ▪ pai( x ) = num( x ) / 2
▪ num( filho direito de x ) = 2 * num( x ) + 1
Estrutura de Dados Prof. Marcos Alves 79
Definição: uma árvore binária completa é uma árvore binária de altura k e 2k – 1
nós.
Exemplos:
k=1 k=2 k=3
1 1 1
2 3 2 3
4 5 6 7
Podemos numerar os nós de uma árvore completa da seguinte forma:
num( raiz ) = 1
nó x:
▪ num( filho esquerdo de x ) = 2 * num( x ) ▪ pai( x ) = num( x ) / 2
▪ num( filho direito de x ) = 2 * num( x ) + 1
Estrutura de Dados Prof. Marcos Alves 80
Definição: uma árvore binária quase completa é uma árvore binária de
altura k e n nós é uma árvore binária de altura k com nós numerados de 1 a n.
Exemplo: k = 4 e n = 10
Exemplo: k = 4 e n = 10
1
Exemplo: k = 4 e n = 10
1
Exemplo: k = 4 e n = 10
1
2 3
Exemplo: k = 4 e n = 10
1
2 3
Exemplo: k = 4 e n = 10
1
2 3
4 5
Exemplo: k = 4 e n = 10
1
2 3
4 5 6
Exemplo: k = 4 e n = 10
1
2 3
4 5 6 7
Exemplo: k = 4 e n = 10
1
2 3
4 5 6 7
Exemplo: k = 4 e n = 10
1
2 3
4 5 6 7
8 9
Exemplo: k = 4 e n = 10
1
2 3
4 5 6 7
8 9 10
Exemplo: k = 4 e n = 10
1
2 3
4 5 6 7
8 9 10
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
se T = NULO
então retorna 0;
fimSe
fimFunção
T
A
B C
D E F G
T
B C
D E F G
B C
T
D E F G
B C
D E F G
B C
D E F G
B C
T
D E F G
T
B C
D E F G
Info(T) = ‘E’ A
B C
T
D E F G
Info(T) = ‘E’ A
Eprox NULO RETORNA 0
B C
D E F G
Info(T) = ‘E’ A
Eprox NULO RETORNA 0
D E F G
Info(T) = ‘E’ A
Eprox NULO RETORNA 0
RETORNA 1 + 0 + 0 T
D E F G
Info(T) = ‘E’ A
Eprox NULO RETORNA 0 T
Dprox NULO RETORNA 0 B C
RETORNA 1 + 0 + 0
D E F G
RETORNA 1 + 1 + 1
RETORNA 1 + 0 + 0
D E F G
RETORNA 1 + 1 + 1
…
Estrutura de Dados Prof. Marcos Alves 118
2. Função para criar uma cópia de uma árvore binária
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T = NULO
então cT NULO;
senão cT aloca(noArvore);
Info(cT) Info(T);
constroiCopia(Eprox(T), Eprox(cT));
constroiCopia(Dprox(T), Dprox(cT));
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
se T ≠ NULO
inteiro i;
escreva “-”;
fimPara
escreva Info(T);
imprimeAB(Eprox(T), espaco+1);
fimSe
fimFunção
T R
A
B C
D E F
H I
R
A
T
B C
D E F
H I
R
A
B C
T
D E F
H I
R
A
B C
D E F
T
H I
B C
D E F
T
H I
B C
T
D E F
H I
B C
T
D E F
H I
B C
D E F
T
H I
D E F
T
H I
D E F
H I
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
R
escreva - - F
Info(T) = ‘H’ A
espaco = 3
escreva - - H T
B C
escreva - C
D E F
H I
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
R
escreva - - F
Info(T) = ‘H’ A
espaco = 3
escreva - - H
B C
escreva - C
Info(T) = ‘E’ T
espaco = 2 D E F
H I
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
escreva - - F - - E R
Info(T) = ‘H’ A
espaco = 3
escreva - - H
B C
escreva - C
Info(T) = ‘E’ T
espaco = 2 D E F
escreva - - E
H I
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
escreva - - F - - E T R
Info(T) = ‘H’ A
espaco = 3
escreva - - H
B C
escreva - C
Info(T) = ‘E’
espaco = 2 D E F
escreva - - E
H I
...
Estrutura de Dados Prof. Marcos Alves 151
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
escreva - - F - - E R
Info(T) = ‘H’ A
espaco = 3
escreva - - H
B C
escreva - C
Info(T) = ‘E’
espaco = 2 D E F
escreva - - E
... H I
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 153
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 154
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 155
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 156
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 157
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 158
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 159
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 160
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 161
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 162
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 163
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 164
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 165
Info(T) = ‘A’
- - - I
Função imprimeAB( noArvore ↑T, inteiro espaco )
se T ≠ NULO
espaco = 0
então imprimeAB(Dprox(T), espaco+1);
Info(T) = ‘C’
espaco = 1 - - F inteiro i;
para i de 1 até espaco passo 1 faça
escreva “-”;
Info(T) = ‘F’
espaco = 2 - - - H fimPara
escreva Info(T);
Info(T) = ‘I’
- C
imprimeAB(Eprox(T), espaco+1);
fimSe
espaco = 3
fimFunção
escreva - - - I
I
escreva - - F - - E
F
Info(T) = ‘H’
espaco = 3
escreva - - H
H
C
escreva - C
A
Info(T) = ‘E’
espaco = 2
E
escreva - - E R
...
D
Estrutura de Dados Prof. Marcos Alves 166
Três tipos diferentes de percursos:
1. In-ordem
2. Pré-ordem
3. Pós-ordem
2. Pré-ordem
3. Pós-ordem
2. Pré-ordem
3. Pós-ordem
2. Pré-ordem
3. Pós-ordem
2. Pré-ordem
Visita a raiz;
3. Pós-ordem
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
3. Pós-ordem
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
Percorre sua sub-árvore à direita em pré-ordem.
3. Pós-ordem
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
Percorre sua sub-árvore à direita em pré-ordem.
3. Pós-ordem
Percorre sua sub-árvore à esquerda em pós-ordem;
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
Percorre sua sub-árvore à direita em pré-ordem.
3. Pós-ordem
Percorre sua sub-árvore à esquerda em pós-ordem;
Percorre sua sub-árvore à direita em pós-ordem.
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
Percorre sua sub-árvore à direita em pré-ordem.
3. Pós-ordem
Percorre sua sub-árvore à esquerda em pós-ordem;
Percorre sua sub-árvore à direita em pós-ordem.
Visita a raiz;
Estrutura de Dados Prof. Marcos Alves 176
Três tipos diferentes de percursos:
1. In-ordem
Percorre sua sub-árvore à esquerda em in-ordem;
Visita a raiz;
Percorre sua sub-árvore à direita em in-ordem.
2. Pré-ordem
Visita a raiz;
Percorre sua sub-árvore à esquerda em pré-ordem;
Percorre sua sub-árvore à direita em pré-ordem.
3. Pós-ordem
Percorre sua sub-árvore à esquerda em pós-ordem;
Percorre sua sub-árvore à direita em pós-ordem.
Visita a raiz;
Estrutura de Dados Prof. Marcos Alves 177
EXEMPLOS:
1. In-ordem
Percorre sua sub-árvore à esquerda em in-ordem;
Visita a raiz;
Percorre sua sub-árvore à direita em in-ordem.
A
In-ordem: D B A E G C H F I
B C
D E F
G H I
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
T
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
TD E F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
D
T E F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
T
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
B
T C
D E F
G H I
A
In-ordem: D B A E G C H F I
T
B C
D E F
G H I
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
T
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
D
TE F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
TG H I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
G
T H I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
T
B C
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
G
TH I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
G H
T I
A
In-ordem: D B A E G C H
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
T
D E F
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
G H
TI
Estrutura de Dados Prof. Marcos Alves 209
EXEMPLOS:
1. In-ordem
Percorre sua sub-árvore à esquerda em in-ordem;
Visita a raiz;
Percorre sua sub-árvore à direita em in-ordem.
A
In-ordem: D B A E G C H F I
B C
D E F
T
G H I
A
In-ordem: D B A E G C H F I
B C
D E F
G H I
T
Estrutura de Dados Prof. Marcos Alves 211
EXEMPLOS:
1. In-ordem
Percorre sua sub-árvore à esquerda em in-ordem;
Visita a raiz;
Percorre sua sub-árvore à direita em in-ordem.
A
In-ordem: D B A E G C H F I
B C
D E F
G H I
A
Pré-ordem: B D C E G F H I
B C
D E F
G H I
B C
D E F
G H I
A
Pré-ordem: A B D C E G F H I
T
B C
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
T
D E F
G H I
A
Pré-ordem: A B D C E G F H I
T
B C
D E F
G H I
B C
D E F
G H I
A
Pré-ordem: A B D C E G F H I
T
B C
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
T
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
D E F
T
G H I
A
Pré-ordem: A B D C E G I
B C
T
D E F
G H I
A
Pré-ordem: A B D C E G I
T
B C
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
T
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
D E F
T
G H I
A
Pré-ordem: A B D C E G F H I
B C
T
D E F
G H I
A
Pré-ordem: A B D C E G F H I
B C
D E F
T
G H I
A
Pré-ordem: A B D C E G F H I
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
D E F
G H I
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
T
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
T
B C
D E F
G H I
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
T
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
D E F
T
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
T
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
D E F
T
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
D E F
T
G H I
A
Pós-ordem: D B G E H I F C A
B C
T
D E F
G H I
A
Pós-ordem: D B G E H I F C A
T
B C
D E F
G H I
B C
D E F
G H I
A
Pós-ordem: D B G E H I F C A
B C
D E F
G H I
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem( DProx( T ) );
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem( DProx( T ) );
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem( DProx( T ) );
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem( DProx( T ) );
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então inOrdem(EProx(T));
visitaNo(T);
inOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então visitaNo(T);
preOrdem(EProx(T));
preOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então visitaNo(T);
preOrdem(EProx(T));
preOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então visitaNo(T);
preOrdem(EProx(T));
preOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então visitaNo(T);
preOrdem(EProx(T));
preOrdem(DProx(T));
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
se T ≠ NULO
então posOrdem(EProx(T));
posOrdem(DProx(T));
visitaNo(T);
fimSe
fimFunção
Pré-ordem: A B C D L E F K G I J H
Pós-ordem: L K J I H G F E D C B A
In-ordem: A B L D K F J I G H E C