Buscar

Aula 14 - Árvores binárias de busca

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Árvores binárias de busca 
SCC 202/502 – Algoritmos e Estruturas 
de Dados I 
Prof. Robson L. F. Cordeiro 
Material original editado: Prof. Thiago A. S. Pardo 
Árvore binárias 
n  Árvores de grau 2, isto é, cada nó tem dois 
filhos, no máximo 
A 
B C 
D E 
Raiz 
F 
Terminologia: 
•  filho esquerdo 
•  filho direito 
•  informação 
2 
Árvores binárias de busca (ABB) 
n  Também chamadas “árvores de pesquisa” ou 
“árvores ordenadas” 
n  Definição 
n  Uma árvore binária com raiz R é uma ABB se: 
n  a chave (informação) de cada nó da subárvore 
esquerda de R é menor do que a chave do nó R (em 
ordem alfabética, por exemplo) 
n  a chave de cada nó da subárvore direita de R é maior 
do que a chave do nó R 
n  as subárvores esquerda e direita também são ABBs 
3 
ABB 
n  Exemplos 
D 
B F 
A C 
R1 
G E 
D 
A F 
B C 
R2 
G E 
é ABB não é ABB 
4 
ABB 
n  Por que uma ABB é boa? 
n  Imagine a situação 
n  Sistema de votação 
n  Cada eleitor só pode votar uma vez 
n  Um sistema deve armazenar todos os números 
de título de eleitor que já votaram 
n  A cada nova votação, deve-se consultar o 
sistema para verificar se aquela pessoa já votou; 
o voto é computado apenas se a pessoa ainda 
não votou 
n  A votação deve ter resultado on-line 
5 
ABB 
n  Por que uma ABB é boa? 
n  Solução com ABBs 
n  Cada número de título é armazenado em uma 
ABB 
n  Suponha que em um determinado momento, a 
ABB tenha 1 milhão de títulos armazenados 
n  Surge nova pessoa e é preciso saber se o 
número do título está ou não na árvore (se já 
votou ou não) 
6 
ABB 
n  Por que uma ABB é boa? 
n  Considere uma ABB com chaves 
uniformemente distribuídas (árvore cheia) 
7 
ABB 
n  Por que uma ABB é boa? 
n  Responda 
n  Quantos elementos cabem em uma árvore de 
N níveis, como a anterior? 
n  Como achar um elemento em uma árvore 
assim a partir da raiz? 
n  Quantos nós se tem que visitar, no máximo, 
para achar o título na árvore, ou ter certeza de 
que ele não está na árvore? 
8 
ABB 
n  Por que uma ABB é boa? 
nível 1 
nível 2 
nível 3 
nível 4 
nível 5 
nível N 
Nível Quantos cabem 
1 1 
2 3 
3 7 
4 15 
... ... 
N 2N - 1 
10 1.023 
13 8.191 
16 65.535 
18 262.143 
20 ≈ 1 milhão 
30 ≈ 1 bilhão 
... 
9 
ABB 
n  Por que uma ABB é boa? 
nível 1 
nível 2 
nível 3 
nível 4 
nível 5 
nível N 
Nível Quantos cabem 
1 1 
2 3 
3 7 
4 15 
... ... 
N 2N - 1 
10 1.023 
13 8.191 
16 65.535 
18 262.143 
20 ≈ 1 milhão 
30 ≈ 1 bilhão 
... 
10 
ABB 
n  Por que uma ABB é boa? 
n  Para se buscar em uma ABB 
n  Em cada nó, compara-se o elemento buscado com o 
elemento presente 
n  Se menor, percorre-se a subárvore esquerda 
n  Se maior, percorre-se a subárvore direita 
n  Desce-se verticalmente até as folhas, no pior caso, 
sem passar por mais de um nó em um mesmo nível 
n  Portanto, no pior caso, a busca passa por tantos nós 
quanto for a altura da árvore 
n  O(log N) 11 
ABB 
n  Exemplo: busca pelo elemento E nas árvores 
abaixo 
D 
B F 
A C 
R1 
G E 
D 
A F 
B C 
R2 
G E 
é ABB não é ABB 
3 consultas 6 consultas 12 
ABB 
n  Por que uma ABB é boa? 
n  Buscas muito rápidas!!! 
13 
ABB 
n  Representação 
D 
A 
F B 
C G 
Raiz 
Raiz 
ABB vazia 
14 
ABB 
n  Declaração 
 
typedef int elem; 
 
typedef struct bloco { 
 elem info; 
 struct bloco *esq, *dir; 
} no; 
 
typedef struct { 
 no *raiz; 
} ABB; 
15 
ABB 
n  Operações sobre a ABB 
n  Devem considerar a ordenação dos elementos 
da árvore 
n  Por exemplo, na inserção, deve-se procurar pelo 
local certo na árvore para se inserir um elemento 
n  Exercício 
n  Construa a partir do início uma ABB com os 
elementos K, E, C, P, G, F, A, T, M, U, V, X, Z 
16 
TAD ABB 
n  Operações básicas 
n  Está na árvore? 
n  Inserção 
n  Remoção 
17 
TAD ABB 
n  Está na árvore? 
n  Comparando o parâmetro “chave” com a informação 
no nó “raiz”, 4 casos podem ocorrer 
n  A árvore é vazia => a chave não está na árvore => 
fim do algoritmo 
n  Elemento da raiz = chave => achou o elemento (está 
no nó raiz) => fim do algoritmo 
n  Chave < elemento da raiz => chave pode estar na 
subárvore esquerda 
n  Chave > elemento da raiz => chave pode estar na 
subárvore direita 
n  Pergunta: quais os casos que podem ocorrer para a 
subárvore esquerda? E para a subárvore direita? 
Os mesmos! 
18 
TAD ABB 
n  Exercício 
n  Implementação da sub-rotina de busca de um 
elemento na árvore 
19 
TAD ABB 
n  Inserção 
n  Estratégia geral 
n  Inserir elementos como nós folha (sem filhos) 
n  Procurar o lugar certo e então inserir 
n  Comparando o parâmetro “chave” com a informação 
no nó “raiz”, 4 casos podem ocorrer 
n  A árvore é vazia => insere o elemento, que passará a 
ser a raiz; fim do algoritmo 
n  Elemento da raiz = chave => o elemento já está na 
árvore; fim do algoritmo 
n  Chave < elemento da raiz => insere na subárvore 
esquerda 
n  Chave > elemento da raiz => insere na subárvore 
direita 20 
TAD ABB 
n  Exercício 
n  Implementação da sub-rotina de inserção de 
um elemento na árvore 
21 
TAD ABB 
n  Remoção 
n  Para a árvore abaixo, remova os elementos T, C e K, 
nesta ordem 
K 
E P 
G C 
R 
T M 
A F 
22 
TAD ABB 
n  Remoção 
n  Caso 1 (remover T): o nó a ser removido (R) não tem filhos 
n  Remove-se o nó 
n  Pai de R aponta para NULL no filho direito 
n  Caso 2 (remover C): o nó a ser removido tem 1 único filho 
n  Remove-se o nó 
n  “Puxa-se” o filho para o lugar do pai 
n  Caso 3 (remover K): o nó a ser removido tem 2 filhos 
n  Acha-se a maior chave da subárvore esquerda 
n  R recebe o valor dessa chave 
n  Remove-se a maior chave da subárvore esquerda 23 
TAD ABB 
n  Exercício 
n  Implementação da sub-rotina de remoção de 
um elemento da árvore 
24 
Percursos em ABBs 
n  Exercício: faça os percursos em pré-ordem, em-
ordem, pós-ordem, largura e profundidade na árvore 
abaixo 
25 
K 
E P 
G C 
Raiz 
T M 
A F 
ABB 
n  Questão para pensar em casa 
n  Qual a relação entre a tradicional busca 
binária e busca em uma ABB? 
26