função busca(RRN, //página atual sendo pesquisada chave, //chave sendo procurada RRN_encontrado, //retorna a página que contém a chave pos_encontrada) //retorna posição da chave na página se (RRN == -1) então retorne FALSO //chave de busca não encontrada senão leia página P identificada por RRN procure chave em P, e atribua a POS a posição onde a chave deve ocorrer se (chave_encontrada) então RRN_encontrado = RRN //RRN atual contém a chave pos_encontrada = POS //POS contém a posição da chave na página retorne VERDADEIRO //se chave não encontrada, recomeça-se busca no filho apropriado senão retorne busca(P.filhos[POS], chave, RRN_encontrado, pos_encontrada) fim-funcao insercao(RRN_atual, novachave, chave_promovida, filho_dir_chave_promovida) se (RRN_atual == -1) chave_promovida = novachave; filho_dir_chave_promovida = -1 retorne ha_promocao senão leia página RRN_atual e armazene em Pagina, se não houver criar nó procure por novachave em Pagina pos = posição em que chave ocorre ou deveria ocorrer em Pagina fim-se se (chave_encontrada) produza mensagem de erro indicado que novachave já existe na árvore retorne erro senão valor_de_retorno = insercao(Pagina.filhos[pos], novachave, chave_promovida_inferior, filho_dir_chave_promovida_inferior) se (valor_de_retorno == nao_ha_promoção) ou (valor_de_retorno == erro) retorne valor_de_retorno senão se (há espaço em Pagina para chave_promovida_inferior) inserir chave_promovida_inferior e filho_dir_chave_promovida_inferior em Pagina retorne nao_ha_promoção senão split(chave_promovida_inferior, filho_dir_chave_promovida_inferior, Pagina, chave_promovida, filho_dir_chave_promovida, Pagina_nova); escreva Pagina no arquivo na posição RRN_atual escreva Pagina_nova no arquivo na posição filho_dir_chave_promovida retorne ha_promoção fim-se fim-se fim-se fim_funcao