12
AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 43 Esperamos que, ao final desta aula, você seja capaz de: identificar as vantagens da árvore B em relação às árvores binária de busca e AVL; conhecer as funções de busca, inserção e remoção da árvore B. Para compreender as árvores B, é necessário conhecer os conceitos sobre árvores apresentados na aula um deste caderno. Isso é importante porque certos conceitos são mencionados com recorrência. Além disso, é importante também conhecer as árvores binárias de busca e AVL, apresentados nas aulas um e dois, respectivamente deste caderno. Esse conteúdo também é necessário, nesta aula, porque a árvore B é, basicamente, uma extensão das árvores binária de busca e AVL. Como estudamos nas aulas anteriores, as árvores binárias armazenam em um nó um único registro e possuem dois nós (esquerdo e direito) como filhos. Essa última característica indica ordem 2 em uma árvore binária. Além disso, vimos que a árvore binária de busca tem como característica armazenar, na subárvore esquerda de um nó, apenas elementos menores do que ele e, na direita, nenhum menor. Podemos ampliar o conceito de armazenamento ordenado da árvore binária de busca para maiores ordens, ou seja, uma árvore de busca com mais de dois filhos por nó. Outra característica que pode ser adiciona é poder armazenar mais de um elemento (registro). Esse conceito é importante porque amplia as possibilidades de armazena- mento além manter uma árvore com profundidade menor do que uma árvore AUL A 3 • A E ST R UTU RA DE D A A DOS Árvore B

Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

  • Upload
    dokien

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 43

Esperamos que, ao final desta aula, você seja capaz de:

identificar as vantagens da árvore B em relação às árvores binária de busca e AVL;

conhecer as funções de busca, inserção e remoção da árvore B.

Para compreender as árvores B, é necessário conhecer os conceitos sobre árvores apresentados na aula um deste caderno. Isso é importante porque certos conceitos são mencionados com recorrência. Além disso, é importante também conhecer as árvores binárias de busca e AVL, apresentados nas aulas um e dois, respectivamente deste caderno. Esse conteúdo também é necessário, nesta aula, porque a árvore B é, basicamente, uma extensão das árvores binária de busca e AVL.

Como estudamos nas aulas anteriores, as árvores binárias armazenam em um nó um único registro e possuem dois nós (esquerdo e direito) como filhos. Essa última característica indica ordem 2 em uma árvore binária. Além disso, vimos que a árvore binária de busca tem como característica armazenar, na subárvore esquerda de um nó, apenas elementos menores do que ele e, na direita, nenhum menor.

Podemos ampliar o conceito de armazenamento ordenado da árvore binária de busca para maiores ordens, ou seja, uma árvore de busca com mais de dois filhos por nó. Outra característica que pode ser adiciona é poder armazenar mais de um elemento (registro).

Esse conceito é importante porque amplia as possibilidades de armazena-mento além manter uma árvore com profundidade menor do que uma árvore

AULA 3 • A ESTRUTURA DE DRA ADOS

Árvore B

Page 2: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

44 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

binária de busca ou árvore AVL. Szwarcfiter e Markenzon (1994, p.160) expõem que, “[...] utilizando o recurso de manter mais de uma chave em cada nó da estrutura, proporciona uma organização [...] tal que as operações mencionadas (busca, inserção e remoção) são executas rapidamente” (grifo nosso).

Árvores com as novas características citadas anteriormente são conhe-cidas como árvore multidirecional de busca e são descritas nesta aula. Além dela, analisaremos as árvores B. Veremos suas características e como devemos preceder às operações de busca, inserção e remoção.

3.1 Árvore multidirecional de busca

Tenenbaum, Langsan e Augenstein (1995, p. 537) definem uma árvore multi-direcional de busca de ordem n como “[...] uma árvore geral na qual cada nó tem n ou menos subárvores e contém uma chave a menos que a quantidade de suas subárvores. Ou seja, se um nó tiver quatro subárvores, ele conterá três chaves”. Na Figura 1, é apresentado um exemplo desse tipo de árvore. Na Figura 1a, é apresentada uma árvore de busca multidirecional de ordem 4. A Figura 1b apre-senta outra árvore de busca multidirecional com folhas que não estão somente no último nível, assim como a árvore da Figura 1a. A Figura 1c ilustra outra árvore de busca multidirecional, de ordem 3 e com todas as folhas no último nível. As setas que não apontam para algum nó são subárvores vazias.

Figura 1 Exemplos de árvore multidirecional de busca.

Page 3: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45

Fonte: Tenenbaum, Langsan e Augenstein (1995).

Como exemplo do novo tipo de estrutura, árvores multidirecionais de busca, aparece a árvore B, que estudaremos na seqüência.

3.2 Árvores B

A árvore B foi proposta por Rudolf Bayer. Não se sabe de onde vem o B do nome da árvore. Uma das hipóteses é que a letra B é a primeira letra do seu sobrenome Bayer. Em países de língua inglesa, as pessoas costumam ser conhecidas por seus sobrenomes. A letra B também é a primeira letra da palavra balanceamento (em inglês balancing). Essa árvore obedece ao conceito de árvore balanceada. Também é uma hipótese plausível. Outra possibilidade, na opinião dos autores deste caderno a menos provável, é que Rudolf Bayer trabalhava na Boeing Scientific Research Labs. Olha outro B aí! Com tanto B na vida dele, árvore B é um nome mais do que justo. Independente de onde real-mente veio, a árvore B é uma árvore muito importante e das mais utilizadas para armazenamento de grande quantidade de dados.

A árvore B é uma árvore balanceada em que o número de nós acessados em uma busca/inserção/remoção é muito pequeno se comparado às outras árvores estudadas. Outro ponto importante é que a árvore B garante que as folhas se encontrem todas em um mesmo nível, independente da ordem em que os dados serão inseridos.

Em outras palavras, Preiss (2000) define uma árvore B de ordem n como uma árvore de busca com as seguintes propriedades:

a raiz tem no mínimo duas e no máximo n subárvores;

cada um dos nós internos (diferentes da raiz) tem entre n/2 e n subár-vores e entre n/2 –1 e n –1 elementos;

todos os nós externos (folhas) estão no mesmo nível.

Page 4: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

46 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

Na Figura 2, está expresso um exemplo de árvore B de ordem 4. Repare que essa árvore obedece à definição: a raiz possui duas subárvores (quan-tidade mínima); todas as folhas estão em um mesmo nível; e todos os nós internos (que não são folhas diferentes da raiz) possuem quatro subárvores, ou seja, entre n/2 e n.

Figura 2 Exemplo de árvore B de ordem 4.

Fonte: Pimentel e Oliveira (1996).

Já sabemos que em uma árvore de ordem n (em que n é um número natural maior do que um), a árvore B pode ter n filhos. Além disso, é balanceada. Nesse caso, precisamos ter algoritmos que garantam essa característica à árvore. Um elemento inserido em uma árvore B é sempre colocado em uma folha. Assim como nas outras árvores e, de acordo com a necessidade, as redistribuições são feitas a fim de garantir que a árvore fique sempre balanceada. Na verdade, a árvore B generaliza as árvores binárias de busca, mais especificamente a árvore AVL.

A seguir é apresentada a classe do nó da árvore B.

private class NoArvoreB {

private Comparable[] chaves;

private NoArvoreB[] filhos;

private NoArvoreB() {

chaves = new Comparable[2*n];

filhos = new NoArvoreB[2*n+1];

}

//construtor

private NoArvoreB(NoArvoreB copia) {

chaves = copia.chaves.clone();

filhos = copia.filhos.clone();

}

Page 5: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 47

//define as chaves

private void setChaves(Comparable[] c)

{

chaves = c;

}

//define os filhos

filhos = f;

}

private boolean isFolha() {

return (filhos[0] == null);

}

}

isisSaiba maisisSaib isSaiba maisSaiba maisSaiba maisSaiba maisSaiba maisSaiba maisSaiba maisSaiba mais

As árvores B são muito utilizadas como forma de armazenamento em memória secundária (como HDs e outros dispositivos de armazenamento secundário com acesso direto). As árvores B se destinam a armazenar grandes tabelas, por isso diversos sistemas comerciais de bancos de dados, por exemplo, as empregam (SZWARCFITER; MARKENZON, 1994).

Veremos, na seqüência, como proceder às operações de busca, inserção e remoção na árvore B.

3.2.1 Busca

A busca realizada em uma árvore B é semelhante à busca em uma árvore AVL e, conseqüentemente, a de uma árvore binária de busca. Como é possível armazenar mais de um elemento em um nó, é necessário adicionar testes a serem realizados em cada nó para indicar qual o próximo passo.

Page 6: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

48 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

Na Figura 3, é ilustrado um exemplo de busca em árvore B. Considere a busca da chave 10. A primeira comparação a ser feita é com a raiz. Como o elemento 10 está à direita de 50, segue a busca para o nó que armazena os elementos 9 e 30. Nesse nó, são realizadas novas comparações a fim de deter-minarmos para qual filho a busca deverá seguir. Como o elemento é maior do que 9 e menor do que 30, a busca segue para o filho localizado entre 9 e 30. O caminho percorrido está destacado na Figura 3.

Figura 3 Busca de um elemento em uma árvore B.

Fonte: Szwarcfiter e Markenzon (1994).

3.2.2 Inserção

Na inserção, devemos nos preocupar com a definição enquanto à ordem da árvore, porque um nó interno (diferente da raiz) deve possuir entre n/2 e n subárvores. Temos de garantir isso.

O primeiro passo da inserção é buscarmos a folha na qual será inserido o novo elemento. Em seguida, como segundo passo, devemos verificar se a folha está ou não completa e, se não estiver completa, basta incluir o elemento em sua posição correta dentro do nó. Se o nó estiver cheio, devemos proceder ao segundo passo de forma diferente.

Se o nó estiver cheio, ao invés de criar um novo nó com apenas esse novo elemento, devemos dividir o nó cheio. Assim, se algum nó ficar com ordem maior do que n, o nó deve ser dividido. Para isso, o valor central do nó que será divi-dido sobe para a posição do pai, repetindo recursivamente por toda árvore até a raiz (se necessário).

E se a raiz estourar? Nesse caso, um novo nó raiz será criado e poderá ter somente um elemento se necessário. É importante acrescentar que, por proceder à inserção da forma descrita anteriormente, é que se garante que todas as folhas sempre estarão em um mesmo nível.

Page 7: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 49

A seguir é apresentado um exemplo, passo a passo, de inserção em uma árvore B.

A Figura 4 apresenta a árvore B inicial.

Figura 4 Árvore B inicial.

A partir da árvore B inicial, devemos proceder às inserções dos seguintes elementos, respectivamente: B, N, F. A Figura 5 ilustra o resultado da árvore após a inserção normal de B em um nó folha.

Figura 5 Inserção do elemento B.

Na seqüência, como já é de conhecimento, deve ser inserido o elemento N. Contudo o nó em que deve ser inserido N já está cheio. Assim devemos dividir o nó em dois e subir em um nível o elemento central. Lembre-se de que esse processo repete recursivamente até a raiz. A árvore resultante após a inserção de N é apresentada na Figura 6.

Figura 6 Inserção do elemento N.

O último passo do exemplo é a inserção do elemento F. Mais uma vez o nó em que deveria ser inserido o novo elemento, nesse caso F, já está cheio. Procedemos à divisão do nó em dois e subimos o elemento central. A Figura 7 apresenta o resultado final da árvore.

Page 8: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

50 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

Figura 7 Inserção do elemento F.

3.2.3 Remoção

Para a remoção de um elemento, também existem dois casos que merecem atenção: de o elemento a ser inserido estar ou não em uma folha. Além disso, há o problema de, ao remover, um nó não atingir a quantidade mínima de elementos que devem estar armazenados no nó, de acordo com a ordem a árvore. A seguir é apresentado o algoritmo de remoção.

1. Aplicar o procedimento de buscar, verificando a existência do elemento a ser removido na árvore.

2. Se o elemento a ser removido se encontrar em uma folha, o elemento é simplesmente retirado.

3. Se o elemento a ser removido não se encontrar em uma folha (se localizar em um nó interno), é substituído pelo elemento imediatamente maior ou imediatamente menor. Observe que o elemento imediatamente maior ou menor pertence, por definição, a uma folha. Com isso, reduzimos para o caso de remover o elemento da folha.

4. Se o nó continuar com o número mínimo de elementos, fim.

5. Se não, a folha obrigatoriamente tem uma chave a menos que o mínimo. Assim verifique os nós irmãos (imediatamente à esquerda e direita):

5.1 se um dos nós irmãos tiver mais do que o número mínimo de elementos, aplique redistribuição. Lembre-se de que um nó interno deve possuir um mínimo de n/2 –1 elementos. A redistribuição consiste em concatenar o nó folha do elemento removido com o do irmão adjacente, o que resulta em um nó maior do que o aceito pela definição. Em seguida, efetue a divisão do nó em dois e suba em um nível o elemento central, igual à divisão da inserção;

5.2 se não, concatene o nó com um dos irmãos e o elemento separador do pai.

6. Se ocorrer concatenação, volte ao passo 4 com o nó pai, porque remover um elemento do pai pode acarretar de o pai não ter mais o número mínimo de elementos.

A seguir é apresentado um exemplo, passo a passo, de remoção em uma árvore B.

Page 9: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 51

A Figura 8 apresenta a árvore B inicial.

Figura 8 Árvore B inicial.

A partir da árvore B inicial, devemos proceder às remoções dos seguintes elementos respectivamente: J, L. Como passo 1 da remoção, é necessário buscar o elemento a ser removido da árvore. É identificado o nó que contém os elementos H e J. Como o elemento se encontra em uma folha, remova o elemento (passo 2). Já que o nó não continua com o número mínimo de elementos (passo 5), execute o passo 5.1 (redistribuição). Faça a redistribuição com o nó irmão da direita. Por ter sido feita uma redistribuição, a remoção é finalizada. O resultado é apresentado na Figura 9.

Figura 9 Remoção do elemento J.

Agora vamos remover o elemento L. Como passo 1 da remoção, é necessário buscar o elemento a ser removido da árvore. É identificado o nó que contém os elementos H e L. Como o elemento se encontra em uma folha, remova o elemento (passo 2). Uma vez que o nó não continua com o número mínimo de elementos (passo 5), execute o passo 5.2 (concatenação). A concatenação é feita com o pai e o irmão direito, o que resulta em um nó com os elementos H, M, P, T. Execute o passo 6 voltando ao passo 4 para o pai (nó com os elementos F, U). Como o nó pai continua obedecendo à definição acerca do número mínimo de elementos, a remoção é finalizada. O resultado é apresentado na Figura 10.

Figura 10 Remoção do elemento L.

Page 10: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

52 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

Chegamos ao fim desta aula, na qual apresentamos a árvore B e, com isso, encerramos o assunto árvores. É importante ter compreendido o conteúdo exposto aqui para que possamos avançar e discutir outros assuntos também importantes. Se algo não ficou claro, aproveite e revise. As atividades estão aí para isso também.

Nesta aula, vimos os conceitos das árvores multidirecionais de busca. Como exemplo desse tipo de estrutura de dados, foi apresentada a árvore B. A árvore B é uma árvore balanceada em que o número de nós acessados em uma busca/inserção/remoção é muito pequeno se comparado às outras árvores estudadas. Outro ponto importante é que a árvore B garante que as folhas se encontrem todas em um mesmo nível, independente da ordem em que os dados serão inse-ridos. Nesse sentido, a árvore B é, basicamente, uma extensão da árvore AVL e, conseqüentemente, da árvore binária de busca. Analisamos ainda as funções de busca, inserção e remoção da árvore B, com exemplos.

1. Após ter estudado sobre árvores B e verificado sua superioridade sobre as demais árvores, estudadas em aulas anteriores, analise as afirmativas. Em seguida, assinale a alternativa correta.

I. De forma diferente das árvores binárias, cada nó de uma árvore B poderá ter mais de dois filhos.

II. Um nó de árvore B tem um campo ou um método para indicar se é um nó folha ou não. Já a implementação padrão de um nó AVL não costuma ter esse campo ou método.

III. As folhas da árvore B são dispostas mais flexivelmente que as da árvore binária: suas folhas poderão estar em níveis diferentes, desde zero até o valor da altura da árvore.

IV. As árvores B são árvores balanceadas projetadas para trabalhar com dispositivos de armazenamento secundário.

a) Todas as afirmativas estão corretas.

b) Somente as afirmativas II e III estão corretas

c) Somente as afirmativas I, II e IV estão corretas.

d) Somente as afirmativas I, III e IV estão corretas.

2. Após ler as características da árvore B, unindo esse conhecimento com o já adquirido por meio do estudo das árvores binárias de busca e AVL, liste as principais vantagens da árvore B em relação às demais.

Page 11: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 53

3. Sobre as funções de inserção, busca e remoção de nós em uma árvore B, analise os itens a seguir.

I. Para se inserir um novo nó em uma árvore B, será necessária a loca-lização do nó folha em que o novo elemento deve ser inserido. Se o nó estiver cheio, será necessário dividi-lo em dois, passar o elemento mediano para o pai.

II. Embora seja semelhante à busca realizada em uma árvore binária de busca, essa função em uma árvore B se difere pelo fato de que se deve decidir entre vários caminhos.

III. A remoção de um nó de uma árvore B pode ser dividida em três casos: o nó a ser removido está em um nó interno, o nó a ser removido está em uma folha e o nó a ser removido está desconectado da árvore.

IV. Em uma árvore B, no caso da remoção de um nó que não é folha, o nó sucessor (que se localiza em uma folha) será movido para a posição a ser removida, e o processo de remoção ocorre como se o nó sucessor fosse removido do nó folha.

Assinale a alternativa correta.

a) Todas as afirmativas estão corretas.

b) Somente as afirmativas II e III estão corretas

c) Somente as afirmativas I, II e IV estão corretas.

d) Somente as afirmativas I, III e IV estão corretas.

4. Escreva um programa em Java, que possibilite a inserção e a exibição dos elementos de uma árvore B. Use a classe Comparable para definir o tipo de dado armazenado (armazene valores inteiros). Teste o algoritmo com várias entradas de sua preferência.

Na atividade um, a resposta correta é a letra (c). A alternativa (III) está errada, pois, em uma árvore B, todas as folhas estão em um mesmo nível. As demais alternativas estão de acordo com os assuntos explanados nesta aula e nas aulas anteriores.

Na atividade dois, você deve ter comparado características da árvore B com características da árvore binária de busca e da AVL. A partir dessa compa-ração, deve ter listado as vantagens da árvore B sobre a AVL e binária de busca. Mencionou que a árvore B permanece sempre balanceada (já as árvores biná-rias e AVL requerem aplicação de algoritmos de balanceamento), pois os nós são inseridos sempre no último nível. Também citou a vantagem da velocidade de pesquisa que a árvore B proporciona, superior a da pesquisa da árvore

Page 12: Estrutura de Dados - unitins.br · AULA 3 • ESTRUTURA DE DADOS UNITINS • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • 3º PERÍODO 45 Fonte: Tenenbaum, Langsan e Augenstein (1995)

AULA 3 • ESTRUTURA DE DADOS

54 3º PERÍODO • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS • UNITINS

binária, bem como economia em acessos a disco, caso ela já esteja carregada em memória.

Na atividade três, a resposta correta é a letra (c). A afirmativa (III) erra ao acrescentar uma terceira situação de remoção (“o nó a ser removido está desco-nectado da árvore”, caso inexistente). As demais alternativas estão de acordo com os assuntos explanados em aula e estudados em materiais referenciados.

Finalmente, na atividade quatro, você deve ter desenvolvido um aplicativo em Java que, no mínimo, insira e liste elementos em uma árvore B. Testou o programa a partir da inserção de vários valores inteiros escolhidos de sua prefe-rência. Na impressão, deve ter sido possível visualizar no console de saída os inteiros armazenados na árvore, a partir de comandos de saída, a exemplo de System.out.println(no.toString()).

Se você respondeu corretamente a essas questões, atingiu os dois objetivos propostos para esta aula: identificar as vantagens da árvore B em relação às árvores binárias de busca e AVL e conhecer as funções de busca, inserção e remoção da árvore B.

PIMENTEL, Maria da G. C.; OLIVEIRA, Maria C. F. B-Trees & Cia. 1996. Disponível em: <http://www.icmc.usp.br/manuals/sce183/ex8_5.gif>. Acesso em: 27 ago. 2008.

PREISS, Bruno R. Estrutura de dados e algoritmos. São Paulo: Campus, 2000.

SUN, Javadoc. Interface comparable. Disponível em: <http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html>. Acesso em: 29 ago. 2008.

SZWARCFITER, Jayme Luiz; MARKENZON, Lílian. Estruturas de dados e seus algoritmos. Rio de Janeiro: LTC, 1994.

TENENBAUM, Aaron M.; LANGSAN, Yedidyah; AUGENSTEIN, Moshe J. Estrutura de dados usando C. São Paulo: Makron Books, 1995.

Após encerrarmos as árvores, passearemos pelos arquivos em Java, Veremos como se criam arquivos de texto de acesso binário, aleatório e seqüencial e como se classifica sua estrutura interna de acesso.

Anotações