Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Universidade Federal de Lavras
Departamento de Ciência da Computação
GCC109 – Algoritmos e Estruturas de Dados III
Professor: Denilson Alves Pereira
Lista de Exercícios 4
Data Limite de Entrega: 08/05/11 (turma 10A) e 12/05/11 (turma 14A)
O exercício deve ser entregue pelo Moodle (http://aluno.dcc.ufla.br). Envie arquivos somente nos
formatos txt e pdf (não enviar .doc, .docx, .odt etc.). Arquivos compactados somente .zip e .tar.gz (não
enviar .rar, .z etc.). Não use acentos e nem “ç” nos nomes de arquivo.
Exercícios copiados receberão nota zero
1. Mostre a árvore B*, de ordem m = 3, resultante após a inserção das chaves abaixo. Os itens (a),
(b) e (c) formam uma sequência de inserções na mesma árvore.
(a) 7, 10, 12, 3, 5, 8, 4, 6, 9, 11
(b) 13, 21, 22, 14, 15, 16, 17, 18, 19, 20
(c) 32, 31, 30, 29, 28, 27, 26, 25, 24, 23
2. Considerando a árvore B* criada no exercício anterior, mostre a árvore resultante após a
remoção das chaves abaixo. Os itens (a), (b) e (c) formam uma sequência de remoções da
mesma árvore.
(a) 16, 17, 18, 19, 20
(b) 32, 31, 30, 29, 28
(c) 3, 7, 6, 4, 5
3. Repita os exercícios (1) e (2) para uma árvore B+ de ordem m1 = 3 para as páginas internas e
ordem m2 = 2 para as páginas externas (folhas).
4. Repita o exercício (1) para uma árvore 2-3-4. Depois mostre como representar a árvore final
como uma árvore SBB e uma árvore rubro-negra.
5. Considere a estrutura de dados abaixo para implementação da árvore B+ (proposta por Nivio
Ziviani). Acrescente a essa estrutura de dados uma lista sequencial para implementação do
acesso sequencial em ordem crescente dos registros armazenados na árvore.
#define MM 1
#define MM2 2
typedef int TipoChave;
typedef struct TipoRegistro {
TipoChave Chave;
/* outros componentes */
} TipoRegistro;
typedef enum {
Interna, Externa
} TipoIntExt;
typedef struct TipoPagina *TipoApontador;
typedef struct TipoPagina {
TipoIntExt Pt;
union {
struct {
int ni;
TipoChave ri[MM];
TipoApontador pi[MM + 1];
} U0;
struct {
int ne;
TipoRegistro re[MM2];
} U1;
} UU;
} TipoPagina;
6. Implemente a função ImprimeOrdenado, que imprime as chaves dos registros da árvore B+
declarada no exercício anterior em ordem crescente.
7. Implemente a função Insere(TipoRegistro Reg, TipoApontador *Ap), que insere o registro Reg na
árvore B* apontada por *Ap.
GCC109 – Algoritmos e Estruturas de Dados III
Lista de Exercícios 4