• Árvore em que nenhum nó tem grau superior a dois (nenhum nó tem mais de dois filhos)
• Seus filhos distingue-se entre uma subárvore esquerda e uma subárvore direita
A
B C
F G
D E
H I
3
A
B C
F G
D E
H I
Árvore Binária
A
B
A
C
Subárvore Esquerda
Subárvore Direita
• O Nível 0 (zero) tem no máximo um nó (a raiz)
• O Nível 1 tem no máximo dois nós
• O Nível 2 tem no máximo quatro nós
• O Nível 3 tem no máximo oito nós
• O Nível 4 tem no máximo dezesseis nós
• O Nível n tem no máximo 2
nnós
2
n• Árvore Estritamente Binária
• Árvore Binária Completa
• Árvore Binária Cheia
• Árvore Degenerada (zigue-zague)
• Cada nó tem graus 0 ou 2
• Ou um nó é folha ou tem 2 filhos
• Cada nó tem graus 0 ou 2
• Ou um nó é folha ou tem 2 filhos
• Toda folha está ou no último ou no
penúltimo nível da árvore
• Toda folha está ou no último ou no
penúltimo nível da árvore
• Cada nó possui exatamente um filho (um nó vazio em cada subárvore)
a) b)
• Cada nó possui exatamente um filho (um nó vazio em cada subárvore)
a) b)
• Todo elemento da subárvore esquerda é menor que o elemento raiz
• Todo elemento da subárvore direita é maior que o elemento raiz
• As subárvores direita e esquerda também são árvores de busca binária
42 6
5 7
1 3
• Se a árvore estiver vazia, adicione um novo nó contendo o elemento X
• Se a raiz é maior que X então insira X na subárvore esquerda
• Caso contrário insira X na subárvore direita
• Inserir 7, 13
7
• Inserir 7, 13, 20
7
13
• Inserir 7, 13, 20, 4
7
13
20
• Inserir 7, 13, 20, 4, 1
7
13
20 4
• Inserir 7, 13, 20, 4, 1, 12
7
13
20 4
1
• Inserir 7, 13, 20, 4, 1, 12, 5
7
13
20 4
1 12
• Inserir 7, 13, 20, 4, 1, 12, 5
7
13
20 4
1 5 12
• Busca Sequencial
– Método mais simples de pesquisa
– Varredura na qual o objeto de pesquisa é comparado com cada registro:
• Até se encontrar um objeto igual
• Atingir o final da estrutura (objeto procurado não encontrado)
• Busca Sequencial
– Pode ser muito ineficiente quando o número de elementos no vetor for muito grande
– No pior caso realiza-se N comparações, onde N representa o número de elementos
– No melhor caso esta busca necessitaria de
apenas uma “única” comparação
• Vetor Ordenado
2 6 9 14 21 23 32 34 37 67 76 87 92
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 2
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 6
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 9
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 14
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 21
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 23
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 32
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 34
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 37
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 67
10 comparações
• Busca Binária
– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor
• Regras
– Menor que o elemento do meio, sabe-se que ele poderá estar na primeira parte do vetor – Maior que o elemento do meio, sabe-se que
ele poderá estar na segunda parte do vetor
– Igual ao elemento do meio (encontrado)
• Busca Binária
– A busca é repetida na metade selecionada até encontrar o objeto ou chegar ao fim
– No melhor caso o elemento está no meio – No pior caso o elemento que se busca não
está no vetor
• Vetor Ordenado
2 6 9 14 21 23 32 34 37 67 76 87 92
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
67 == 32? ou 67 < 32? ou 67 > 32?
• Valor procurado 67
2 6 9 14 21 23 32 34 37 67 76 87 92
Segunda parte do vetor.
67 == 32? ou 67 < 32? ou 67 > 32
• Valor procurado 67
34 37 67 76 87 92
67 == 67 ou 67 < 67 ou 67 > 67
• Valor procurado 67
34 37 67 76 87 92
67 == 67 ou 67 < 67 ou 67 > 67
2 comparações
• Para encontrar um elemento X
– Se a árvore é vazia então a busca falha – Se X é a raiz então X foi encontrado
– Se X é menor que a raiz, então procure X na subárvore esquerda
– Se X é menor que a raiz, então procure X na
subárvore direita
• Buscar o elemento 20
7
18
20 4
1 5 13
20 >= 7?
• Buscar o elemento 20
7
18
20 4
1 5 13
• Buscar o elemento 20
7
18
20 4
1 5 13
20 >= 18?
• Buscar o elemento 20
7
18
20 4
1 5 13
• Buscar o elemento 20
7
18
20 4
1 5 13 20 >= 20?
• Buscar o elemento 20
7
18
20 4
1 5 13 Encontrou
• Remoção
– Para excluir um nó de uma árvore binária de busca, há de se considerar 4 casos distintos:
• Remoção de folha
• Remoção de um nó com um filho
• Remoção de um nó com dois filhos
• Remoção do nó raiz
• Remoção na Folha
7
18
20 4
1 5 13
• Remoção na Folha
7
18
20 4
1 5 13
• Remoção na Folha
7
18
20 4
1 5
• Remoção de um nó com um filho
7
18
20 4
1 5
• Remoção de um nó com um filho
7
18
20 4
1 5
• Remoção de um nó com um filho
7
4 20
1 5
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu antecessor
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu antecessor
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu antecessor
9
18
20 3
2 7 13
6 8
1
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu sucessor
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu sucessor
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó com dois filhos
– Substituir o nó pelo seu sucessor
9
18
20 6
2 7 13
3 8
1
• Remoção de um nó raiz
– Encontrar o maior elemento da subárvore a esquerda
– Copiar o maior elemento da subárvore esquerda para o nó que foi retirado
– Caso o maior nó possua filhos, aplique as
regras apresentadas anteriormente
• Remoção de um nó raiz
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó raiz
9
18
20 5
2 7 13
3 6 8
1
• Remoção de um nó raiz
8
18
20 5
2 7 13
3 6
1