Você está na página 1de 6

1

1
rvores de Busca
2
2
Dissemos anteriormente que
a capacidade de alocao
dinmica muito desejvel
em muitos casos.
Mas vimos que as estruturas
lineares, como listas ligadas,
tm um problema por exigir
acesso seqencial.
Usando Estruturas Dinmicas
3
3
Uma soluo para este problema pode
ser atravs do uso de estruturas no
lineares. Ex: Dividir a lista em duas.
Estruturas no Lineares
X
Menores que X
Maiores que X
4
4
O problema de dividir a lista em duas
que isto apenas divide o problema
em dois.
Estruturas no Lineares
X
Menores que X
Maiores que X
5
5
Estruturas no Lineares
X
Uma soluo mais robusta consiste
em dividir a lista a cada elemento.
X< Y
Y< X
X< Y< Z
X<Z< Y
Y<Z<X
Z< Y<X
6
6
rvores: Estruturas dinmicas com:
Folhas: ns sem filhos
Raiz
pai
filho dir. filho esq.
ancestral
descendente


7
7
rvores binrias onde os elementos
so organizados de forma que:
rvore de Busca Binria
Todos os elementos na sub-rvore
esquerda de cada n k tm valor
menor ou igual ao valor no n k.
Todos os elementos na sub-rvore
direita de cada n k tm valor maior do
que o valor no n k.
8
8
rvore binria onde os elementos
so organizados de forma que:
rvore de Busca Binria
y < x z > x
x
9
9
Exemplo: 50, 20, 39, 8, 79, 26, 58, 15,
88, 4, 85, 96, 71, 42, 53.
rvore de Busca Binria
50
20
8
4 15
39
26 42
79
58
53 71
88
85 96
10
10
Estrutura de dados dinmica, com
recuperao em tempo logartmico.
rvore de Busca Binria
0
1
2
3
11
11
Ocorre sempre em uma folha.
Insero em rvores de Busca
Procedimento Inclui (raiz, x):
Se raiz ento
se elemento na raiz > x
ento Inclui (esquerda, x)
seno Inclui (direita, x)
seno { aloque espao para um n;
coloque x neste n;
retorne apontador novo n}
12
12
Exemplo: 50, 20, 39, 8, 79, 26, 58, 15,
88, 4, 85, 96, 71, 42, 53.
rvore de Busca Binria
50
20
8
4 15
39
26 42
79
58
53 71
88
85 96


13
13
Nem sempre ocorre em uma folha.
Remoo em rvore de Busca
Procedimento Remove (raiz, x)
EndN Busca (x);
Se EndN ento relate insucesso
14
14
Exemplo: Remove (raiz, 60)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
58
53 71
88
85 96
raiz raiz raiz raiz
15
15
Nem sempre ocorre em uma folha.
Remoo em rvores de Busca
Procedimento Remove (raiz, x)
EndN Busca (x);
Se EndN ento relate insucesso
seno se EndN folha (esq AND
dir )
ento apague apontador pai;
16
16
Exemplo: Remove (raiz, 53)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
58
53 71
88
85 96
raiz raiz raiz raiz
17
17
Exemplo: Remove (raiz, 53)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
58
71
88
85 96
raiz raiz raiz raiz
18
18
Remoo em rvores de Busca
Procedimento Remove (raiz, x)
EndN Busca (x);
Se EndN ento relate insucesso
seno se EndN folha (esq AND
dir )
ento apague apontador pai;
seno se x tiver apenas um
filho ento
faa pai de x
apontar para filho x


19
19
Exemplo: Remove (raiz, 58)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
58
71
88
85 96
raiz raiz raiz raiz
20
20
Exemplo: Remove (raiz, 58)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
71
88
85 96
raiz raiz raiz raiz
21
21
Remoo em rvores de Busca
Procedimento Remove (raiz, x)
EndN Busca (x);
Se EndN ento relate insucesso
seno se EndN folha (esq AND dir )
ento apague apontador pai;
seno se esq OR dir ento
faa pai de x apontar para filho x
seno substitua x pelo seu sucessor
22
22
Exemplo: Remove (raiz, 20)
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
79
71
88
85 96
raiz raiz raiz raiz
Onde est o
sucessor de 20?
23
23
Onde est o sucessor de um elemento
cujo n tem filho direita?
Remoo em rvore de Busca
50
20
8
4 15
39
26 42
raiz raiz raiz raiz
Um passo direita.
Tantos passos esquerda
quantos sejam necessrios.
24
24
Exemplo: Remove (raiz, 20)
Remoo em rvore de Busca
50
26
8
4 15
39
42
raiz raiz raiz raiz


25
11 de Abril de 2010 25
Encaminhamento em rvores
Binrias
26
Encaminhamentos sistemticos em
rvore baseiam-se na ordem em que a
raiz visitada com relao a seus
descendentes.
26
Encaminhamento em rvores
Tm normalmente o mesmo custo.
A diferena est no efeito produzido.
Muitas vezes, para uma situao h
um encaminhamento mais adequado.
27
- A raiz visitada antes dos seus descendentes.
- Depois as sub-rvores da raiz so visitadas em
pr-ordem da esquerda para a direita.
27
Pr-ordem
1
2
3 4
5
6 7
28
Um exemplo um pouco maior:
28
Pr-ordem
1
2
3
4 5
6
7 8
9
10
11 12
13
14 15
29 29
In-ordem
4
2
1 3
6
5 7
- Visitar a sub-rvore esquerda In-ordem.
- Visitar a raiz. (entre as sub-rvores)
- Visitar a sub-rvore direita In-ordem.
30
Um exemplo um pouco maior:
30
In-ordem
8
4
2
1 3
6
5 7
12
10
9 11
14
13 15


31
- As sub-rvores da raiz so visitadas em ps-
ordem da esquerda para a direita.
- A raiz visitada depois dos seus descendentes.
31
Ps-ordem
7
3
1 2
6
4 5
32
Um exemplo um pouco maior:
32
Ps-ordem
15
2
3
4 5
6
7
1
14
10
8 9
13
11 12
33
Alm dos encaminhamentos em
- pr-ordem,
- in-ordem e
- ps-ordem,
33
Encaminhamento em rvores
34
Pense numa rvore que representa
uma expresso aritmtica:
34
Efeito dos Encaminhamentos
/
-
b 2 * c
*
* 2
a
4 a

Você também pode gostar