SlideShare uma empresa Scribd logo
1 de 18
Árvore B
Árvore B é uma estrutura de dados que utiliza o
recurso de manter mais de uma chave em cada nó da
estrutura.
Ela proporciona uma organização de ponteiros de tal
forma que as operações buscas, inserções e remoções
são executadas rapidamente.
As árvores B são largamente utilizadas como forma de
armazenamento em memória secundária. Diversos
sistemas comerciais de Banco de dados, por exemplo,
as empregam.
Árvore B
Árvores B são árvores enraizadas balanceadas, com
balanço perfeito. Sua construção assegura que as folhas
se encontram em um mesmo nível, não importando a
ordem de entrada dos dados.
Um nó de uma árvore B é chamado página.
Cada página, exceto a raiz, deve ter entre d e 2d
elementos.
A raiz tem pelo menos dois descendentes diretos.
Representando Árvores B
Numa árvore binária, cada nó contém um valor (chave)
e duas sub-árvores (filhos) que podem ser nulas:
Numa árvore 2-3, árvore B de ordem 1, um nó pode ter
até 2 chaves e 3 filhos:
9Valores menores que 9 Valores maiores que 9
9 13 25
Representando Árvores B
Um nó de uma árvore B, nó M-ário (nó alargado),
possui M descendentes diretos e M-1 elementos.
Os elementos dentro de um nó estão ordenados.
O ponteiro situado entre dois elementos a e b aponta
para a sub-árvore que contém todos os elementos entre
a e b.
Representando Árvores B
Os ponteiros para os descendentes e os elementos
dentro de um nó são armazenados em arrays.
Os descendentes têm índices entre 0 e M-1.
Os elementos têm índices entre 0 e M-2.
Representando Árvores Binárias
Nó de uma árvore binária:
typedef struct No *Ponteiro_No;
typedef struct No {
int chave;
Ponteiro_No filho_esquerdo;
Ponteiro_No filho_direito;
} No;
Pode se acrescentar informações relativas ao elemento
armazenado ou uma lista de elementos armazenados
com a mesma chave.
Chave do nó
Referências para os nós
descendentes
Representando Árvores AVL
No nó de uma árvore AVL, acrescenta-se o balance:
typedef struct No *Ponteiro_No;
typedef struct No {
int chave;
int balance;
Ponteiro_No filho_esquerdo;
Ponteiro_No filho_direito;
} No;
Pode se acrescentar informações relativas ao elemento
armazenado ou uma lista de elementos armazenados
com a mesma chave.
Chave do nó
Referências para os nós
descendentes
Balance: diferença de
alturas
Representando Árvores B
Nó (página) de uma árvore B:
typedef struct No *Ponteiro_No;
typedef struct No {
int n;
int chaves[M-1];
Ponteiro_No filhos[M];
} No;
Número de elementos no nó
Chaves do nó
Referências para os nós
descendentes
Pode se acrescentar informações relativas ao elemento
armazenado ou uma lista de elementos armazenados
com a mesma chave.
Representando Árvores B
Para criar a árvore propriamente dita, criaremos a classe
Arvore, que manipula objetos do tipo No.
typedef struct Arvore {
Ponteiro_No raiz;
} Arvore;
Arvore *createBTree() {
Arvore *ret =
(Arvore *) malloc(sizeof(Arvore));
ret->raiz = NULL;
return ret;
}
Busca
Algoritmo Simplificado:
Se x < C0; seguir F0
Se Ci-1 < x < Ci; seguir Fi
Se x > Cn-1; o caminho será indicado por Fn
C0 C1 ... Cn-1
F0 F1 F2 ... Fn-1 Fn
Mesmo índice = à esquerda = menor
Índice mais um = à direita = maior
Busca
int busca ( int k, Ponteiro_No p ) {
if ( p == NULL ) return 0;
else {
int i = 0;
while ( i < p->n-1 && k > p->chaves[i] )
i++;
if ( k == p->chaves[i] )
return 1; // achei
else if ( k < p->chaves[i] )
return busca ( k, p->filhos[i] );
else // k > p->chaves[i]
return busca ( k, p->filhos[i+1] );
}
}
(i ≠ 0) p->chaves[i-1] < k
Inserção
Um elemento só é inserido na folha.
Casos:
• Se a página onde o elemento for inserido tiver menos de 2d
chaves, então o elemento será inserido nessa página;
• Caso contrário, a página ficará com 2d+1 chaves, sendo
necessário realizar uma cisão. O elemento do meio será
promovido à página diretamente acima. Os elementos
menores ficarão numa página à esquerda desse elemento e
os maiores à direita. Se esse procedimento resultar em outra
página com 2d+1 chaves, realizar-se-á novamente o mesmo
procedimento, podendo chegar até a raiz.
Inserção
Inserção do elemento 6 em uma árvore com d = 1 (Árvore 2-3)
3 5
2 4 7 8
3 5
2 4 6 7 8
Inserção
3 5 7
2 4 6 8
2 4 6 8
73
5
Inserção
O algoritmo de inserção é recursivo.
Pré-Work:
• Quando estamos numa página não-nula da árvore, tenta-
se inserir no nível abaixo, escolhendo o descendente
adequado (Busca).
• Quando estamos numa página nula, neste caso chegou-se
ao fim da árvore, ultrapassando-se mesmo o nível mais
baixo e devolve-se simplesmente o elemento ao nó superior,
simulando uma promoção (Caso Base).
Inserção
Pós-Work:
• Se houver uma promoção, o elemento promovido deve ser
inserido na página atual.
• Se a página atual estiver cheia, a página deve ser partida e
o elemento mediano promovido.
Caso especial:
Se estamos na raiz, se houver uma promoção, deve ser criada uma
nova raiz tendo como único elemento aquele que foi promovido e
como descendentes os dois nós resultantes da partição da antiga
raiz.
Applet
http://slady.net/java/bt/view.php

Mais conteúdo relacionado

Mais procurados

Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02thomasdacosta
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores BThiago Colares
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Data structure power point presentation
Data structure power point presentation Data structure power point presentation
Data structure power point presentation Anil Kumar Prajapati
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de DadosRoberto Grande
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search TreeAbhishek L.R
 
Binary search tree operations
Binary search tree operationsBinary search tree operations
Binary search tree operationsKamran Zafar
 
2 database system concepts and architecture
2 database system concepts and architecture2 database system concepts and architecture
2 database system concepts and architectureKumar
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Leinylson Fontinele
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
 
Data Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeData Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeManishPrajapati78
 

Mais procurados (20)

Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02
 
Normalization
NormalizationNormalization
Normalization
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores B
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
Data structure power point presentation
Data structure power point presentation Data structure power point presentation
Data structure power point presentation
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
Data Structure (Tree)
Data Structure (Tree)Data Structure (Tree)
Data Structure (Tree)
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search Tree
 
Binary search tree operations
Binary search tree operationsBinary search tree operations
Binary search tree operations
 
2 database system concepts and architecture
2 database system concepts and architecture2 database system concepts and architecture
2 database system concepts and architecture
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
Data Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeData Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search Tree
 

Semelhante a Estrutura de dados Árvore B

Semelhante a Estrutura de dados Árvore B (8)

17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de busca
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Binárias
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Apresentação árvore 2 3 4
Apresentação árvore 2 3 4Apresentação árvore 2 3 4
Apresentação árvore 2 3 4
 
Árvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoÁrvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenação
 
Aula 18
Aula 18Aula 18
Aula 18
 
Aula 19
Aula 19Aula 19
Aula 19
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 

Mais de Horácio J. C. Filho (6)

L13
L13L13
L13
 
If672cc p1 sol
If672cc p1 solIf672cc p1 sol
If672cc p1 sol
 
Heaps 4up
Heaps 4upHeaps 4up
Heaps 4up
 
Binomial heaps
Binomial heapsBinomial heaps
Binomial heaps
 
If672cc mp1 sol
If672cc mp1 solIf672cc mp1 sol
If672cc mp1 sol
 
Revisao1
Revisao1Revisao1
Revisao1
 

Estrutura de dados Árvore B

  • 1.
  • 2. Árvore B Árvore B é uma estrutura de dados que utiliza o recurso de manter mais de uma chave em cada nó da estrutura. Ela proporciona uma organização de ponteiros de tal forma que as operações buscas, inserções e remoções são executadas rapidamente. As árvores B são largamente utilizadas como forma de armazenamento em memória secundária. Diversos sistemas comerciais de Banco de dados, por exemplo, as empregam.
  • 3. Árvore B Árvores B são árvores enraizadas balanceadas, com balanço perfeito. Sua construção assegura que as folhas se encontram em um mesmo nível, não importando a ordem de entrada dos dados. Um nó de uma árvore B é chamado página. Cada página, exceto a raiz, deve ter entre d e 2d elementos. A raiz tem pelo menos dois descendentes diretos.
  • 4. Representando Árvores B Numa árvore binária, cada nó contém um valor (chave) e duas sub-árvores (filhos) que podem ser nulas: Numa árvore 2-3, árvore B de ordem 1, um nó pode ter até 2 chaves e 3 filhos: 9Valores menores que 9 Valores maiores que 9 9 13 25
  • 5. Representando Árvores B Um nó de uma árvore B, nó M-ário (nó alargado), possui M descendentes diretos e M-1 elementos. Os elementos dentro de um nó estão ordenados. O ponteiro situado entre dois elementos a e b aponta para a sub-árvore que contém todos os elementos entre a e b.
  • 6. Representando Árvores B Os ponteiros para os descendentes e os elementos dentro de um nó são armazenados em arrays. Os descendentes têm índices entre 0 e M-1. Os elementos têm índices entre 0 e M-2.
  • 7. Representando Árvores Binárias Nó de uma árvore binária: typedef struct No *Ponteiro_No; typedef struct No { int chave; Ponteiro_No filho_esquerdo; Ponteiro_No filho_direito; } No; Pode se acrescentar informações relativas ao elemento armazenado ou uma lista de elementos armazenados com a mesma chave. Chave do nó Referências para os nós descendentes
  • 8. Representando Árvores AVL No nó de uma árvore AVL, acrescenta-se o balance: typedef struct No *Ponteiro_No; typedef struct No { int chave; int balance; Ponteiro_No filho_esquerdo; Ponteiro_No filho_direito; } No; Pode se acrescentar informações relativas ao elemento armazenado ou uma lista de elementos armazenados com a mesma chave. Chave do nó Referências para os nós descendentes Balance: diferença de alturas
  • 9. Representando Árvores B Nó (página) de uma árvore B: typedef struct No *Ponteiro_No; typedef struct No { int n; int chaves[M-1]; Ponteiro_No filhos[M]; } No; Número de elementos no nó Chaves do nó Referências para os nós descendentes Pode se acrescentar informações relativas ao elemento armazenado ou uma lista de elementos armazenados com a mesma chave.
  • 10. Representando Árvores B Para criar a árvore propriamente dita, criaremos a classe Arvore, que manipula objetos do tipo No. typedef struct Arvore { Ponteiro_No raiz; } Arvore; Arvore *createBTree() { Arvore *ret = (Arvore *) malloc(sizeof(Arvore)); ret->raiz = NULL; return ret; }
  • 11. Busca Algoritmo Simplificado: Se x < C0; seguir F0 Se Ci-1 < x < Ci; seguir Fi Se x > Cn-1; o caminho será indicado por Fn C0 C1 ... Cn-1 F0 F1 F2 ... Fn-1 Fn Mesmo índice = à esquerda = menor Índice mais um = à direita = maior
  • 12. Busca int busca ( int k, Ponteiro_No p ) { if ( p == NULL ) return 0; else { int i = 0; while ( i < p->n-1 && k > p->chaves[i] ) i++; if ( k == p->chaves[i] ) return 1; // achei else if ( k < p->chaves[i] ) return busca ( k, p->filhos[i] ); else // k > p->chaves[i] return busca ( k, p->filhos[i+1] ); } } (i ≠ 0) p->chaves[i-1] < k
  • 13. Inserção Um elemento só é inserido na folha. Casos: • Se a página onde o elemento for inserido tiver menos de 2d chaves, então o elemento será inserido nessa página; • Caso contrário, a página ficará com 2d+1 chaves, sendo necessário realizar uma cisão. O elemento do meio será promovido à página diretamente acima. Os elementos menores ficarão numa página à esquerda desse elemento e os maiores à direita. Se esse procedimento resultar em outra página com 2d+1 chaves, realizar-se-á novamente o mesmo procedimento, podendo chegar até a raiz.
  • 14. Inserção Inserção do elemento 6 em uma árvore com d = 1 (Árvore 2-3) 3 5 2 4 7 8 3 5 2 4 6 7 8
  • 15. Inserção 3 5 7 2 4 6 8 2 4 6 8 73 5
  • 16. Inserção O algoritmo de inserção é recursivo. Pré-Work: • Quando estamos numa página não-nula da árvore, tenta- se inserir no nível abaixo, escolhendo o descendente adequado (Busca). • Quando estamos numa página nula, neste caso chegou-se ao fim da árvore, ultrapassando-se mesmo o nível mais baixo e devolve-se simplesmente o elemento ao nó superior, simulando uma promoção (Caso Base).
  • 17. Inserção Pós-Work: • Se houver uma promoção, o elemento promovido deve ser inserido na página atual. • Se a página atual estiver cheia, a página deve ser partida e o elemento mediano promovido. Caso especial: Se estamos na raiz, se houver uma promoção, deve ser criada uma nova raiz tendo como único elemento aquele que foi promovido e como descendentes os dois nós resultantes da partição da antiga raiz.