Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 1
ESTRUTURAS DE DADOS II
Material de Estudo Completo
Resumos Detalhados • Pseudocódigos • Exercícios Resolvidos
Este material consolida as 8 aulas da disciplina, com explicações claras, algoritmos em pseudocódigo prontos
para estudo e exercícios com soluções para treino e fixação do conteúdo.
Conteúdo
coberto:
Listas • Tabelas Hash • Árvores • ABB • AVL • Árvores B • Compactação
Objetivo: Material imprimível para revisão e prática autônoma
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 2
ÍNDICE
1. Relembrando Listas (Listas Lineares, Encadeadas, Pilhas e Filas)
2. Tabelas Hash (Funções de Dispersão e Tratamento de Colisões)
3. Introdução às Árvores e Árvores Binárias
4. Árvores de Busca Binária – Parte I (Percursos e Busca)
5. Árvores de Busca Binária – Parte II (Inserção e Remoção)
6. Árvores AVL (Balanceamento e Rotações)
7. Árvores B (Definição, Busca e Inserção)
8. Compactação de Arquivos (Run-Length e Huffman)
Apêndice: Dicas de Estudo e Checklist Final
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 3
AULA 1 — RELEMBRANDO LISTAS
Objetivos de aprendizagem
• Relembrar o conceito de listas e suas propriedades estruturais.
• Diferenciar listas lineares (por contiguidade) de listas encadeadas.
• Compreender as disciplinas de acesso: pilhas (LIFO) e filas (FIFO).
• Dominar as operações básicas de busca, inserção e remoção.
1.1 Conceito de Lista
Uma lista é um conjunto de n ≥ 0 nós dispostos de forma linear, em que as propriedades estruturais decorrem
unicamente da posição relativa dos nós. Se n = 0 a lista está vazia. Usualmente os elementos são registros
identificados por um campo-chave (ex.: RGM de aluno).
1.2 Listas com Disciplina de Acesso
Pilha (LIFO – Last In, First Out)
O último elemento inserido é o primeiro a ser removido. Operações: EMPILHAR (insere no topo) e
DESEMPILHAR (remove do topo).
Fila (FIFO – First In, First Out)
O primeiro elemento a entrar é o primeiro a sair. Operações: ENFILEIRAR (insere no fim) e DESENFILEIRAR
(remove do início).
1.3 Lista Linear (por contiguidade)
Implementada sobre um vetor de tamanho fixo M. Variáveis de controle: tamanho (capacidade) e preenchidos
(quantidade atual). Vantagem: simplicidade. Desvantagens: limite pré-definido e possível movimentação de
elementos na inserção/remoção.
Pseudocódigo – Busca Linear
funcao BUSCA(x : inteiro) : inteiro
 var i : inteiro
inicio
 i 0) entao
 indice -1) entao
 para i de indice ate preenchidos-1 faca
 lista[i] proxnão possui pai.
Filho / Pai: Descendentes diretos de um nó / nó superior imediato.
Grau de um nó: Número de filhos (subárvores) que o nó possui.
Folha: Nó de grau zero (sem filhos).
Altura / Profundidade: Número de níveis entre a raiz e a folha mais profunda (há divergência se a contagem
começa em 0 ou 1).
Floresta: Conjunto de duas ou mais árvores desconectadas.
Nível: Raiz no nível 1 (ou 0); filhos da raiz no nível seguinte, e assim por diante.
3.4 Árvores Binárias
Árvore em que todo nó tem grau ≤ 2 (no máximo dois filhos: esquerdo e direito). Implementação típica com
registro contendo o dado e dois ponteiros:
tipo registro TArvore:
 dado : inteiro
 esq : *TArvore
 dir : *TArvore
fimregistro
Exercícios – Aula 3
Exercício 3.1
Em uma árvore com raiz A, filhos B e C; B sem filhos; C com filhos D, E e F; D com filhos G e H. Identifique: (a)
folhas; (b) grau de C; (c) altura da árvore (contando raiz como nível 1).
Solução:
(a) Folhas: B, E, F, G, H
(b) Grau de C = 3
(c) Altura = 4 (níveis: A=1, C=2, D=3, G/H=4)
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 7
AULA 4 — ÁRVORES DE BUSCA BINÁRIA – PARTE I
4.1 Definição e Propriedade Fundamental
Uma Árvore de Busca Binária (ABB) é uma árvore binária em que, para todo nó:
• Todos os valores na subárvore esquerda são menores que o valor do nó;
• Todos os valores na subárvore direita são maiores que o valor do nó.
Essa propriedade permite busca eficiente: a cada passo descartamos metade dos candidatos (semelhante à
busca binária, porém sobre estrutura dinâmica).
4.2 Percursos
Pré-ordem: visita o nó → percorre esquerda → percorre direita.
Pós-ordem: percorre esquerda → percorre direita → visita o nó.
In-ordem: percorre esquerda → visita o nó → percorre direita. Resultado: elementos em ordem crescente.
Pseudocódigo – In-ordem
procedimento inOrdem(Raiz: *TArvore)
inicio
 se (Raiz ≠ NULO) entao
 inOrdem(Raiz->esq)
 VisitaNo(Raiz) // escreve Raiz->dado
 inOrdem(Raiz->dir)
 fimse
fimprocedimento
4.3 Busca em ABB
funcao buscaABB(Raiz: *TArvore, chave: inteiro) : *TArvore
inicio
 se (Raiz ≠ NULO) entao
 enquanto (Raiz->dado ≠ chave) e (Raiz ≠ NULO) faca
 se (chave dado) entao
 Raiz esq
 senao
 Raiz dir
 fimse
 fimenquanto
 fimse
 retorne Raiz // NULO se não encontrou
fimfuncao
Mínimo e Máximo
procedimento minimo(Raiz: *TArvore)
inicio
 enquanto (Raiz->esq ≠ NULO) faca
 Raiz esq
 fimenquanto
 retorne Raiz
fimprocedimento
procedimento maximo(Raiz: *TArvore)
inicio
 enquanto (Raiz->dir ≠ NULO) faca
 Raiz dir
 fimenquanto
 retorne Raiz
fimprocedimento
Exercícios – Aula 4
Exercício 4.1
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 8
Considere a ABB com os valores inseridos na ordem: 30, 13, 45, 10, 17, 40, 70, 21. Qual a sequência gerada por
um percurso in-ordem? E pré-ordem?
Solução:
In-ordem (crescente): 10, 13, 17, 21, 30, 40, 45, 70
Pré-ordem: 30, 13, 10, 17, 21, 45, 40, 70
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 9
AULA 5 — ÁRVORES DE BUSCA BINÁRIA – PARTE II
5.1 Inserção
1. Aloca o novo nó (dado = chave, esq = dir = NULO).
2. Procura o pai percorrendo a árvore (mesma lógica da busca) até encontrar ponteiro NULO.
3. Se a árvore estava vazia, o novo nó vira a raiz. Caso contrário, liga o novo nó à esquerda ou à direita do pai
conforme a comparação.
procedimento insere(chave: inteiro, Raiz: *TArvore)
 declare NovoNo, Pai, Atual: *TArvore
inicio
 NovoNo dado esq dir dado) entao
 Atual esq
 senao
 Atual dir
 fimse
 fimenquanto
 se (Pai = NULO) entao
 Arvore.raiz dado) entao
 Pai->esq dir esq) entao
 pai_u->esq dir esq = NULO) entao
 transplantar(NoRemover, NoRemover->dir) // 0 ou só direito
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 10
 senao se (NoRemover->dir = NULO) entao
 transplantar(NoRemover, NoRemover->esq) // só esquerdo
 senao
 Sucessor dir)
 se (pai(Sucessor) ≠ NoRemover) entao
 transplantar(Sucessor, Sucessor->dir)
 Sucessor->dir dir
 fimse
 transplantar(NoRemover, Sucessor)
 Sucessor->esq esq
 fimse
fimprocedimento
Exercícios – Aula 5
Exercício 5.1
Na ABB do exercício 4.1 (raiz 30), mostre a árvore após a inserção do valor 20 e após a remoção do valor 13.
Solução (textual):
Inserção de 20: 20 é maior que 13 e menor que 21 → fica à esquerda de 21.
Remoção de 13 (tem dois filhos: 10 e 17): sucessor = mínimo da direita = 17. 17 sobe para o lugar de 13; o filho
direito original de 17 (21) passa a ser filho direito do novo 17. O filho esquerdo de 13 (10) torna-se filho esquerdo
de 17.
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 11
AULA 6 — ÁRVORES AVL
6.1 Motivação e Definição
Em ABBs comuns a sequência de inserção pode gerar árvores degeneradas (quase listas), prejudicando a busca.
A árvore AVL (Adelson-Velsky e Landis, 1962) mantém o balanceamento local: para todo nó, a diferença de altura
entre as subárvores esquerda e direita é no máximo 1.
6.2 Fator de Balanceamento (FB)
FB(Nó) = HE − HD, onde HE = altura da subárvore esquerda e HD = altura da direita.
Valores permitidos: −1, 0, +1. Se após inserção/remoção algum nó ficar com |FB| = 2, é necessário rebalancear
por meio de rotações.
6.3 As Quatro Rotações
Rotação simples à esquerda: usada quando o desbalanceamento é “para a direita” (FB = −2) e o filho direito
tem FB ≤ 0.
Rotação simples à direita: simétrica (FB = +2 e filho esquerdo com FB ≥ 0).
Rotação dupla esquerda (direita-esquerda): primeiro rotação à direita no filho direito, depois rotação à
esquerda no nó desbalanceado.
Rotação dupla direita (esquerda-direita): primeiro rotação à esquerda no filho esquerdo, depois rotação à
direita no nó desbalanceado.
Resumo de decisão (após inserção do nó q, nó desbalanceado mais próximo = p):
• HE(p) > HD(p) e HE(u) ≥ HD(u) → rotação simples à direita em p
• HE(p) > HD(p) e HD(u) > HE(u) → rotação dupla direita
• HD(p) > HE(p) e HD(z) ≥ HE(z) → rotação simples à esquerda em p
• HD(p) > HE(p) e HE(z) > HD(z) → rotação dupla esquerda
Exercícios – Aula 6
Exercício 6.1
Insira os valores 10, 20, 30 em uma AVL inicialmente vazia. Descreva as rotações necessárias.
Solução:
Após 10 e 20: árvore 10→20 (direita). FB(10) = −1 (ok).
Inserção de 30: 10→20→30. FB(10) = −2. Filho direito (20) tem FB = −1 → rotação simples à esquerda em 10.
Resultado: raiz 20, esquerda 10, direita 30 (perfeitamente balanceada).
Estruturas de Dados II — Material de Estudo Completo Resumo + Exercícios
Página 12
AULA 7 — ÁRVORES B
7.1 Motivação
Discos rígidos (e mesmo SSDs) são ordens de magnitude mais lentos quea memória RAM. Árvores B minimizam
o número de acessos a disco armazenando múltiplas chaves por nó e mantendo a árvore rasa (baixa altura).
7.2 Propriedades Formais (grau mínimo t)
• Todo nó (exceto raiz) tem pelo menos t−1 chaves e no máximo 2t−1 chaves.
• Todo nó interno com n chaves possui n+1 filhos.
• Todas as folhas estão no mesmo nível (árvore perfeitamente balanceada em altura).
• As chaves dentro de um nó estão ordenadas e separam os intervalos das subárvores.
Exemplo clássico: árvore 2-3-4 (t = 2) → cada nó tem 1 a 3 chaves e 2 a 4 filhos.
7.3 Busca
funcao busca(x: *TArvore, k: inteiro) : (nó, índice)
inicio
 i x.chave[i]) faca
 i

Mais conteúdos dessa disciplina