O documento discute árvores de pesquisa, apresentando seus principais conceitos e tipos. Aborda árvores binárias de busca, árvores balanceadas como AVL e rubro-negras, e explica operações básicas como rotação para manter a árvore balanceada.
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
1. # Estrutura de Dados #
Aula 15 – Pesquisa de Dados
(Árvores de Pesquisa)
Prof. Leinylson Fontinele Pereira
2. Na aula anterior...
Pesquisa de Dados
# Sequencial e Binária
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
3. O que vamos aprender?
Árvores
# Conceito
# Componentes
# Tipos de árvores
# Onde são utilizadas?
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
7. O que é uma Árvore?
16:00
São um tipo especial de grafo
Qualquer par de vértices (nós) está
conectado a apenas uma aresta
Grafo conexo (todos estão conectados)
Acíclico (não possui ciclos)
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
9. O que é uma Árvore?
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
10. Árvores
16:00
As árvores são uma das estrutura de dados
mais importantes da área da computação
Utilizada em muitas aplicações do mundo real
Os relacionamentos lógicos entre os dados
representam alguma dependência de hierarquia
ou composição entre os nodos;
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
11. Árvores: Conceitos Básicos
16:00
As linhas que unem 2 nodos representam os relacionamentos lógicos e as
dependências de subordinação existentes entre eles
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
12. Árvores: Conceitos Básicos
16:00
Relacionamentos de subordinação, formando hierarquias, podem
apresentar diferentes significados
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
16. RepresentaçãoGráfica de uma Árvore
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
17. Terminologia
16:00
A terminologia não é padronizada;
Existem nomes diferentes para os
mesmos conceitos em diferentes
publicações.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
18. Terminologia
16:00
Raiz (root)
Todos os outros nós da árvore são subordinados a ele
O acesso a todos os nós é sempre a partir dele
Nós descendentes:
Relação de dependência com o nó mais acima
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
19. Terminologia
16:00
Caso o número de nós seja diferente
de zero, existe sempre uma raiz;
Caso o número de nós seja zero, é
denominada vazia.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
21. Terminologia
16:00
Subárvore
Conjunto de nós subordinados a um único nó, externo a esta subárvore
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
22. Terminologia
16:00
Grau de Um Nó
Número de subárvores que são subordinadas diretamente a esse nó.
Grau de uma Árvore
É o maior valor dentre os graus de todos os seus nós.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
24. Terminologia
16:00
Folha ou Terminal (externo)
São os nós de grau zero
Nó de derivação (interno)
Nós de grau maior do que zero e que apresentam uma subárvore
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
26. Terminologia
16:00
Nível de um Nó
Número de ligações entre este nó e a raiz da árvore mais um
Caminho
Sequência de nós consecutivos distintos entre dois nós
Comprimento do Caminho
Número de níveis entre os dois nós menos um
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
29. Terminologia
16:00
Floresta
Conjunto de zero ou mais árvores disjuntas
Árvore ordenada
Quando a ordem de suas subárvores é relevante para a
aplicação que está sendo representada através desta
estrutura de dados.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
31. Árvore Binária (Binary Tree)
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
32. Árvore Binária (Binary Tree)
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
33. Árvore Binária (Binary Tree)
16:00
Usadas em situações onde, a cada passo, é preciso
tomar uma decisão entre duas direções
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
34. Árvore Binária (Binary Tree)
16:00
Usadas em situações onde, a cada passo, é preciso
tomar uma decisão entre duas direções
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
36. Árvore Binária (Binary Tree)
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
37. Árvore Binária: Contagemdos Nós
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
38. Árvores Binárias de Busca
16:00
Considere uma árvore binária
cujos nós têm um campo chave
de um tipo linearmente
ordenado, ou seja, de um tipo
(como números, caracteres, e
strings) que admite
comparações.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
39. Árvores Binárias de Busca
16:00
Uma árvore binária é de busca (em relação ao campo chave)
se cada nó X tem a seguinte propriedade:
A chave de X é maior ou igual à chave de qualquer nó na subárvore
esquerda de X e menor ou igual à chave de qualquer nó na subárvore
direita de X.
Em outras palavras, se x é um nó qualquer então y->chave ≤
x->chave ≤ z->chave para todo nó y na subárvore esquerda
de x e todo nó z na subárvore direita de x.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
40. Árvores Binárias de Busca
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
41. 16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
42. Árvore Isomorfa
16:00
Quando é possível que se tornem coincidentes
através de uma permutação na ordem das
subárvores de seus nós
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
43. Árvores Balanceadas (Equilibrada)
16:00
É aquela na qual existe uma
distribuição equilibrada entre
os nós da árvore
Existe uma diferença mínima
entre todas as folhas e a raiz.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
44. Árvore Binária Quase Completa
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
45. Árvores Cheia ou Completamente Balanceada
16:00
É aquela em que todas as folhas estão a uma
distância igual da raiz.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
50. Árvores AVL: Rotação
16:00
Uma rotação simples ocorre quando um nó está
desbalanceado e seu filho estiver no mesmo
sentido da inclinação, formando uma linha reta.
Uma rotação-dupla ocorre quando um nó estiver
desbalanceado e seu filho estiver inclinado no
sentido inverso ao pai, formando um “joelho”.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
51. Árvores AVL: Rotação
16:00
Para garantirmos as propriedades da árvore
AVL rotações devem ser feitas conforme necessário
após operações de remoção ou inserção.
Seja P o nó pai, FE o filho da esquerda
de P e FD o filho da direita de P podemos definir 4
tipos diferentes de rotação:
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
52. Árvores AVL: Rotação à Direita
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
53. Árvores AVL: Rotação à Esquerda
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
54. Árvores AVL: Rotação Dupla à Direita
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
55. Árvores AVL: Rotação Dupla à Esquerda
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
56. Árvore Rubro Negra
16:00
Nas árvores rubro-negras, os nós folhas não são
relevantes e não contém dados.
Estas folhas não precisam ser mantidas em
memória de computador, basta apenas um
ponteiro para nulo para identificá-las.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
57. Árvore Rubro Negra
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
58. Árvore Rubro Negra
16:00
Um nó é vermelho ou preto.
A raiz é preta.
Todas as folhas(nil) são pretas.
Ambos os filhos de todos os nós vermelhos são pretos.
Todo caminho de um dado nó para qualquer de seus nós
folhas descendentes contem o mesmo número de nós pretos.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
59. Operações Básicas
16:00
Criação de uma árvore
Alocação das variáveis necessárias para a definição da árvore
As demais operações são habilitadas depois disso
Inserção de um novo nó
Como raiz
Como folha
Como uma posição intermediária
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
60. Operações Básicas
16:00
Exclusão de um Nó
Quando não se realiza sobre uma folha, precisa reorganizar a árvore
Acesso a um Nó
Destruição de uma árvore
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
61. Operações Básicas
16:00
Pai
Dado um determinado nó, retorna o endereço do nó
imediatamente superior
Tamanho
Retorna o número total de nós de uma árvore
Altura
Retorna a altura da árvore
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
62. Árvores Usando Contiguidade Física
16:00
Não é intuitiva como era no caso das Listas Lineares
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
64. Vantagens Usando Contiguidade Física
16:00
Eficiente em termos de espaço,
principalmente quando o grau não varia
muito
Implementação é mais simples se existir
limitação do número de descendentes.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
65. Desvantagens Usando Contiguidade Física
16:00
Implementação não constitui uma boa
representação física de árvores
Dificuldade de seguir a hierarquia implícita
nestas estruturas ao manipular a árvore
Inserção e Remoção demorada
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
66. Árvore Ternária Usando Contiguidade Física
16:00
A B C D ʎ E ʎ ʎ ʎ ʎ F G ...
1 2 3 4 5 6 7 8 9 10 11 12 13
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
67. Árvores Implementadas por Encadeamento
16:00
O acesso se dá sempre pela raiz
Os demais nós são alcançados somente pelos endereços dos elos
A hierarquia de subordinação, implícita nas árvores, fica
perfeitamente representada.
Todos os nós da árvore deve apresentar a mesma estrutura.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
68. Árvores Implementadas por Encadeamento
16:00
A
B / / C / / / D /
E / / / F / / / G / / /
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
69. Vantagens da Implementação por Encadeamento
16:00
É bastante Intuitiva
Inserção e Remoção são simples, constituindo
basicamente na atualização de endereços nos
campos de elo de alguns nós.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
70. Desvantagens da Implementação por Encadeamento
16:00
Árvores cujos nós têm grau variado apresentam
geralmente muitos campos de elo ociosos
O Acesso aos nós pode ser dificultado devido à
necessidade de acessar qualquer nós sempre
através da raiz.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
72. Nesta aula aprendemos...
Árvores
# Conceito
# Componentes
# Tipos de árvores
# Onde são utilizadas?
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
74. Nesta aula aprendemos...
16:00
Árvores
# Conceito
# Componentes
# Tipos de árvores
# Onde são utilizadas?
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
75. Na próxima aula veremos...
Pesquisa de dados
# Hashing
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
76. Prática
16:00 76
As aulas práticas foram baseadas no material de
Linguagem C Descomplicada , Dr. André R. Backes.
Disponível em: https://programacaodescomplicada.wordpress.com/
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
77. 16:00
Considere a árvore com representação aninhada
( A ( B ) ( C ( F ( H ) ( I ) )) ( D) ( E ( G ) ) )
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
78. 16:00
Quantas subárvores esta árvore contém?
Quais os nós-folha?
Qual o grau de cada nó?
Qual o grau da árvore?
Liste os ancestrais dos nós B, G e I.
Liste os nós de quem C é ancestral próprio.
Liste os nós de quem D é descendente próprio.
Dê o nível e a altura do nó F e A.
Qual a altura da árvore?
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
80. Árvore Binária: Implementação
16:00
Em uma Árvore Binária podemos realizar as seguintes operações
Criação da árvore
Inserção de um elemento
Remoção de um elemento
Acesso a um elemento
Destruição da árvore
Essas operações dependem do tipo de alocação de memória usada
Estática (heap)
Dinâmica (lista encadeada)
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
81. Árvore Binária: Alocação Estática
16:00
Uso de um array
Usa duas funções para retornar a posição dos filhos à esquerda e à
direita de um pai
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
82. Árvore Binária: Alocação Dinâmica
16:00
Cada nó da árvore é tratado como um ponteiro alocado dinamicamente
a medida que os dados são inseridos
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
83. TAD da Árvore Binária
16:00
Para guardar o primeiro nó da árvore utilizamos um ponteiro para
ponteiro. Assim, fica fácil mudar quem é a raíz da árvore (se necessário)
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
84. Árvore Binária
16:00
ArvoreBinaria.h
Os protótipos das funções
O tipo de dado armazenado na árvore
O ponteiro árvore
ArvoreBinaria.c
O tipo de dados árvore
Implementar as suas funções
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
85. 16:00 85
Definindo a Árvore
Binária
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
86. Definindo a Árvore Binária
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
87. 16:00 87
Criando a Árvore
Binária
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
94. 16:00 94
Altura da Árvore
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
95. Altura da Árvore
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
96. Altura da Árvore
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
97. 16:00 97
Número de nós
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
98. Número de nós
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
99. Número de nós
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
100. Árvore Binária: Percurso na árvore
16:00
Percorrer todos os nós é uma operação muito comum em árvores binárias
Cada nó é visitado uma única vez
Isso gera uma sequência linear de nós, cuja ordem depende de como a árvore foi
percorrida
Não existe uma ordem natural para se percorrer todos os nós de uma
árvore binária
Isso pode ser feito para executar alguma ação em cada nó
Essa ação pode ser mostrar (imprimir) o valor do nó, modificar esse valor, etc.
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
101. Percurso pré-ordem
16:00
Ordem de visitação
Raiz
Filho esquerdo
Filho direito
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
102. Percurso pré-ordem
16:00
Ordem de visitação
Raiz
Filho esquerdo
Filho direito
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
103. Percurso em-ordem
16:00
Ordem de visitação
Filho esquerdo
Raiz
Filho direito
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
104. Percurso em-ordem
16:00
Ordem de visitação
Filho esquerdo
Raiz
Filho direito
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
105. Percurso pós-ordem
16:00
Ordem de visitação
Filho esquerdo
Filho direito
Raiz
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
106. Percurso pós-ordem
16:00
Ordem de visitação
Filho esquerdo
Filho direito
Raiz
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
107. 16:00 107
Árvores Binária de Busca
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
108. Árvore Binária de Busca: Inserção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
109. Árvore Binária de Busca: Inserção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
110. Árvore Binária de Busca: Inserção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
111. Árvore Binária de Busca: Inserção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
112. Árvore Binária de Busca: Busca
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
113. Árvore Binária de Busca: Busca
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
114. Árvore Binária de Busca: Busca
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
115. Árvores Binárias de Busca: Remoção
16:00
Remover um nó de uma árvore binária de busca não é uma
tarefa tão simples quanto a inserção.
Isso ocorre porque precisamos procurar o nó a ser removido da
árvore o qual pode ser um nó folha, nó interno (que pode ser a raiz),
com um ou dois filhos.
Se for um nó interno
Reorganizar a árvore para que ela continue sendo uma árvore
binária de busca
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
116. Árvores Binárias de Busca: Remoção
16:00
Trabalha com 2 funções
Busca pelo nó
Tratar os 3 tipos de remoção: com 0, 1 ou 2 filhos
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
117. Árvores Binárias de Busca: Remoção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
118. Árvores Binárias de Busca: Remoção
16:00 Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
119. Árvores Binárias de Busca: Remoção
16:00
Exclusão de um nó folha
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
120. Árvores Binárias de Busca: Remoção
16:00
Exclusão de um nó com um filho
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)
121. Árvores Binárias de Busca: Remoção
16:00
Exclusão de um nó com dois filhos
Pesquisa e Ordenação: Aula 15 – Pesquisa de Dados (Árvores de Pesquisa)