Apresentação do PowerPoint

Propaganda
Árvores Binária de Busca
Disciplina de Algoritmos e Estrutura de Dados
III
Prof. Marcos Antonio Schreiner
27/03/2015
1
Árvore Binária de Busca
Árvores binárias onde
organizados de forma que:


os
elementos
são
Todos os elementos na sub-árvore esquerda
de cada nó k têm valor menor ou igual ao
valor do nó k.
Todos os elementos na sub-árvore direita de
cada nó k têm valor maior do que o valor no
nó k.
2
Árvore Binária de Busca
Árvore binária onde os elementos x, y e z são
organizados do seguinte modo:
x
y<x
z>x
3
Árvore Binária de Busca
Seja a seguinte sequência de números: 50, 20,
39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53.
A árvore construída seria:
50
20
79
8
4
39
15
26
58
42
53
88
71
85
96
4
Adicionar Chave
Sempre em uma folha.
Procedimento Incluir (raiz, x):
Se elemento na raiz > x então
Incluir (esquerda, x)
Senão, se elemento na raiz < x então
Incluir (direita, x)
Senão elemento na raiz != x então
Aloque um nó
Adicione x neste nó
5
Adicionar Chave
Exemplo: 50, 20, 39, 8, 79, 26, 58, 15,
88, 4, 85, 96, 71, 42, 53.
50
20
79
8
4
39
15
26
58
42
53
88
71
85
96
6
Buscar Chave
Função Buscar (raiz, x):
Se elemento na raiz > x então
Retorna Buscar (esquerda, x)
Senão, se elemento na raiz < x então
Retorna Buscar (direita, x)
Senão elemento na raiz != x então
Retorna raiz;
7
Busca Chave
Buscar as chaves: 26, 71.
50
20
79
8
4
39
15
26
58
42
53
88
71
85
96
8
Buscar Chaves
Melhor caso: O(lg n)
Pior caso: O (n) Por que?
1
2
3
4
9
Remover Nó
1) Remover folha;
2) Remover Nó com um filho;
3) Remover Nó com dois filhos.
50
20
79
8
4
39
15
26
58
42
53
88
71
96
10
Remover Nó
Procedimento Remove (raiz, x){
No  Busca (raiz, x);
Se No != Null então {
}
}
11
Remover Nó
Procedimento Remove (raiz, x)
Nó  Busca (raiz, x);
Se No != Null então
Se Nó é folha então
apague apontador para a folha;
12
Remover Nó
Exemplo: Remove (raiz, 53)
50
20
79
8
4
39
15
26
58
42
53
88
71
85
96
13
Remover Nó
Exemplo: Remove (raiz, 53)
50
20
79
8
4
39
15
26
58
42
88
71
85
96
14
Remover Nó
Procedimento Remove (raiz, x)
Nó  Busca (raiz, x);
Se No != Null então
Se Nó é folha então
Apague apontador para a folha;
Senão se Nó tem apenas um filho então
Pai de x apontar para filho de x
15
Remove Nó
Exemplo: Remove (raiz, 58)
50
20
79
8
4
39
15
26
58
42
88
71
85
96
16
Remove Nó
Exemplo: Remove (raiz, 58)
50
20
79
8
4
39
15
26
88
42
71
85
96
17
Remover Nó
Procedimento Remove (raiz, x)
Nó  Busca (raiz, x);
Se No != Null então
Se Nó é folha então
Apague apontador para a folha;
Senão se Nó tem apenas um filho então
Pai de x apontar para filho de x
Senão substitua x pelo seu menor
sucessor
18
Remover Nó
Exemplo: Remove (raiz, 20)
Qual o menor
sucessor de 20?
50
20
79
8
4
39
15
26
88
42
71
85
96
19
Remover Nó
Onde está o sucessor nó que tem filho à direita?
50
20
Um passo à direita.
8
4
39
15
26
Tantos passos à esquerda
quantos sejam necessários.
42
20
Remover Nó
Exemplo: Remove (raiz, 26)
Qual o menor
sucessor de 26?
50
26
8
4
79
39
15
88
42
71
85
96
21
Remover Nó
50
39
8
4
79
42
15
88
71
85
96
22
Possível Problema
Na inclusão dos seguintes elementos: 50, 20, 27,
42, 40 ...
50
20
A árvore binária pode uma
árvore zize-zague.
27
42
40
23
Solução
Árvores balanceadas:
Árvore AVL;
Árvore Rubro-Negra;
Árvore ISAM, B e B+
24
Exercícios
1) Faça os exercícios 4.2, 4.4, 4.5 do Capítulo 4 do
Livro SZWARCFITER, J. L., MARKENZON, L.
Estruturas de Dados e seus Algoritmos. 3a ed.
Rio de Janeiro: LTC, 2010
2) Faça um algoritmo em pseudo-código que
remove um nó em uma árvore binária de busca.
25
Referências
SZWARCFITER, J. L., MARKENZON, L. Estruturas de
Dados e seus Algoritmos. 3a ed. Rio de Janeiro: LTC,
2010.
TENENBAUM, A. M., LANGSAM, Y., AUGENSTEIN, M.
J. Estruturas de Dados Usando C. São Paulo:
Makron, 1995.
LEISERSON, C. E., RIVEST, R. L., CORMEN, T. H.,
STEIN, C. Algoritmos – Teoria e prática. Rio de
Janeiro: Campus, 2002.
2
Download