O documento discute árvores como estrutura de dados, definindo seus principais conceitos e terminologia. É apresentado o conceito de árvore, seus componentes como raiz, nós, folhas e caminhos. Discutem-se árvores binárias, varreduras, árvores de busca, inserção e remoção em árvores de busca.
4. O que vamosaprender?
Árvores
# Conceito
# Componentes
# Tipos de árvores
# Onde são utilizadas?
12:17 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
8. O queé uma Árvore?
12:18
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)
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
10. O queé uma Árvore?
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
11. Árvores
12:18
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;
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
12. Árvores:ConceitosBásicos
12:18
As linhas que unem 2 nodos representam os relacionamentos lógicos e as
dependências de subordinação existentes entre eles
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
18. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
A terminologia não é padronizada;
Existem nomes diferentes para os
mesmos conceitos em diferentes
publicações.
19. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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
20. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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.
22. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Subárvore
Conjunto de nós subordinados a um único nó, externo a esta subárvore
23. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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.
25. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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
27. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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
29. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Altura ou Profundidade
É o número de nós do maior caminho deste nó até um de
seus descendentes-folha
A altura de uma árvore é igual ao maior nível de seus nós
Todos os nós folha tem altura 1.
30. Terminologia
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
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.
33. ÁrvoreBinária (BinaryTree)
12:18
O grau de cada nó pode ser 0, 1 ou 2
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
36. ÁrvoreBinária:Varreduraesquerda‐raiz‐direita
12:18
Conhecida como inorder traversal, ou varredura
central, ou varredura infixa.
Na varredura e‐r‐d visitamos
1. A subárvore esquerdada raiz, em ordem e‐r‐d
2. A raiz
3. Finalmente a subárvore direita da raiz, em ordem e‐r‐d
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
39. ÁrvoreBinária:Varreduraraiz‐esquerda‐direita
12:18
Conhecida como preorder traversal, ou varredura em
pré‐ordem, ou varredura prefixa.
Na varredura r‐e‐d visitamos
1. Visita a raiz
2. Percorre a subárvore esquerda em pré-ordem
3. Percorre a subárvore direita em pré-ordem
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
40. ÁrvoreBinária:Varreduraesquerda‐direita‐raiz
12:18
Conhecida como postorder traversal, ou varredura em
pós‐ordem, ou varredura posfixa.
Na varredura e‐d‐r visitamos
1. Percorre a subárvore esquerda em pós-ordem
2. Percorre a subárvore direitaem pós-ordem
3. Visita a raiz
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
43. ÁrvoresBináriasde Busca
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
44. ÁrvoresBináriasde Busca
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
48. ÁrvoresBináriasde Busca:versãoiterativa
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
No pior caso, a busca consome tempo proporcional à altura
da árvore. Se a árvore for balanceada, o consumo será
proporcional a log n , sendo n o número de nós.
Esse tempo é da mesma ordem que a busca binária num vetor
ordenado.
49. ÁrvoresBináriasde Busca:Inserção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Considere o seguinte problema: Inserir um novo nó, com chave k, em
uma árvore de busca. É claro que a árvore resultante deve também ser
de busca. O novo nó tem a forma de uma folha avulsa e pode ser criado
assim:
51. ÁrvoresBináriasde Busca:Remoção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Problema: Remover um nó de uma árvore de busca de tal
forma que a árvore continue sendo de busca.
Comecemos tratando do caso em que o nó a ser removido é a
raiz da árvore. Se a raiz não tem um dos filhos, basta que o
outro filho assuma o papel de raiz. Senão, faça com que o nó
anterior à raiz na ordem e-r-d assuma o papel de raiz.
54. ÁrvoresBináriasde Busca:Remoção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
A exclusão de um nó é um processo mais complexo. Para excluir um nó de uma
árvore binária de busca, há de se considerar três casos distintos para a exclusão:
55. ÁrvoresBináriasde Busca:Remoção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Exclusão na folha
A exclusão na folha é a mais simples, basta removê-lo da árvore.
56. ÁrvoresBináriasde Busca:Remoção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Exclusão de um nó com um filho
Excluindo-o, o filho sobe para a posição do pai.
57. ÁrvoresBináriasde Busca:Remoção
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Exclusão de um nó com dois filhos
Neste caso, pode-se operar de duas maneiras diferentes. Pode-se substituir o
valor do nó a ser retirado pelo valor sucessor (o nó mais à esquerda da subárvore
direita)
Ou pelo valor antecessor (o nó mais à direita da subárvore esquerda),
removendo-se aí o nó sucessor (ou antecessor).
59. Árvore 𝑛-ária
12:18
Quando apresentar no máximo grau 𝑛 em cada nó
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
60. ÁrvoreIsomorfa
12:18
Quando é possível que se tornem coincidentes
através de uma permutação na ordem das
subárvores de seus nós
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
61. ÁrvoresBalanceadas(Equilibrada)
12:18
É 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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
62. ÁrvoresCheiaou CompletamenteBalanceada
12:18
É aquela em que todas as folhas estão a uma
distância igual da raiz.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
63. ÁrvoreBináriaQuaseCompleta
12:18
A diferença de altura entre as subárvores de
qualquer nó é no máximo 1.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
64. ÁrvoresAVL
12:18
Árvore balanceada pela altura
As alturas das duas subárvores a partir de cada
nó diferem no máximo em uma unidade
As operações de busca, inserção e remoção de
elementos possuem complexidade O(log n)
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
66. ÁrvoresAVL:Rotação
12:18
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”.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
67. ÁrvoresAVL:Rotação
12:18
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:
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
72. ÁrvoreRubroNegra
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
74. ÁrvoreRubroNegra
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
75. OperaçõesBásicas
12:18
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
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
76. OperaçõesBásicas
12:18
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
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
77. OperaçõesBásicas
12:18
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
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
80. VantagensUsandoContiguidadeFísica
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
81. DesvantagensUsandoContiguidade Física
12:18
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
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
83. ÁrvoresImplementadasporEncadeamento
12:18
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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
85. Vantagensda Implementaçãopor Encadeamento
12:18
É 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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
86. Desvantagensda ImplementaçãoporEncadeamento
12:18
Á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.
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
88. Exercício1
12:18
Considere a árvore com representação aninhada
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
( A ( B ) ( C ( F ( H ) ( I ) )) ( D) ( E ( G ) ) )
89. Exercício2
12:18
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?
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
90. Nestaaulaaprendemos...
Árvores
# Conceito
# Componentes
# Tipos de árvores
# Onde são utilizadas?
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
94. Prática
12:18 94
As aulas práticas foram baseadas no material de
LinguagemC Descomplicada , Dr. André R.Backes.
Disponívelem: https://programacaodescomplicada.wordpress.com/
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
96. ÁrvoreBinária:Implementação
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Em uma ÁrvoreBináriapodemos 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)
97. ÁrvoreBinária:AlocaçãoEstática
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Uso de um array
Usa duas funções para retornar a posição dos filhos à esquerda e à
direita de um pai
98. ÁrvoreBinária:AlocaçãoDinâmica
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Cada nó da árvore é tratado como um ponteiro alocado dinamicamente
a medida que os dados são inseridos
99. ÁrvoreBinária:AlocaçãoDinâmica
12:18 Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
Para guardar o primeiro nó da árvore utilizamos um ponteiro para
ponteiro.Assim, fica fácil mudar quem é a raízda árvore (se necessário)
100. ÁrvoreBinária
12:18
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
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)
101. 12:18 101
Definindo a Árvore
Binária
Estrutura de Dados: Aula 13 – Árvores (conceito, elementos, tipos e utilizações)