40 likes | 140 Views
ORI – Árvore B. Algoritmos BUSCA E INSERÇÃO. Algoritmo BuscaB (x) Parâmetros: x: chave procurada p_chave: aponta para a página onde a chave foi encontrada, ou deve ser inserida achou: indica se a chave foi encontrada ou não
E N D
ORI – Árvore B Algoritmos BUSCA E INSERÇÃO
Algoritmo BuscaB (x) Parâmetros: x: chave procurada p_chave: aponta para a página onde a chave foi encontrada, ou deve ser inserida achou: indica se a chave foi encontrada ou não g: g-ésima posição da página apontada por p_chave, onde a chave foi encontrada; se a chave não foi encontrada, p_chave aponta p/ a última página examinada (uma folha) e g informa a posição, nesta página, onde a chave x poderia ser incluída. pilha: armazena o caminho percorrido até chegar ao nó folha filho[ ] : vetor de ponteiros para os filhos de um nó m : número de filhos de um nó
p: ponteiro local p = ptraiz p_chave = NULL achou = falso enquanto p NULL faça i = g = 1 pilha.insere(p) p_chave = p enquanto i m faça se x > pchave[i] então i = g = i + 1 {vai para o próximo elemento} senãose x = pchave[i] então p = NULL {chave encontrada} achou = verdadeiro senão p = pfilho[i] {desce um nível } fim_se i = m + 2 fim_se fim enquanto se i = m + 1 então p = p→filho[m] fim se fim enquanto
InsereB (x) se raiz NULL então Busca_B(x) se achou então //chave existe retorna falso senão //deve-se inserir a chave p = pilha.retira_no( ) esq = dir = NULL inseriu = falso enquanto p NULL E não inseriu faça se pm = max_elementos então // nó está cheio // fazer o split senão // inserir no nó inseriu = verdadeiro fim_se fim_enquanto // o que fazer aqui ? fim_se senão esq = dir = NULL raiz = cria_raiz(esq,dir) // cria raiz raiz.chave[0] = x // insere elemento x na raiz retorna verdadeiro fim_se