Árvores Binárias Balanceadas



Documentos relacionados
Árvores Binárias de Busca

Árvores Binárias Balanceadas

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Dadas a base e a altura de um triangulo, determinar sua área.

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Árvores Balanceadas. Árvore binária completamente balanceada. Ocorre quando a árvore está cheia ou quase cheia com o nível n-1 completo

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

Árvores Binárias de Busca

Pesquisa em Memória Primária. Prof. Jonas Potros

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Algoritmos e Estrutura de Dados III. Árvores

Unidade 5 Armazenamento e Indexação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Lista de Exercícios. Vetores

Pesquisa em Memória Primária. Prof. Jonas Potros

Busca. Pesquisa sequencial

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

EAD Árvore árvore binária

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

MICROSOFT OFFICE EXCEL 2007

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Matemática - UEL Compilada em 18 de Março de Prof. Ulysses Sodré Matemática Essencial:

PROGRAMAÇÃO II 4. ÁRVORE

Árvore Binária de Busca

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = =

Organização e Arquitetura de Computadores I

APOSTILA DE EXCEL 2007

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Informática básica Telecentro/Infocentro Acessa-SP

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

ULA Sinais de Controle enviados pela UC

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

4 RECURSOS AUTOMATIZADOS DO EXCEL

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

CorelDRAW UM PROGRAMA DE DESIGN

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

PDFsam. Manual de Operação. Superior Tribunal de Justiça. Fevereiro/2012 versão 01 - Manual montado por Rafael Verlangieri

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Curso de Capacitação em Gerenciador de Conteúdo PLONE

Programa Intel Educar Tutorial: Ferramenta de Classificação Visual

ÁRVORES BINÁRIAS DE PESQUISA

Algoritmos de Busca em Tabelas

Iniciação à Informática

Google Drive: Acesse e organize seus arquivos

W o r d p r e s s 1- TELA DE LOGIN

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Prof. Daniela Barreiro Claro

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Computadores XXI: Busca e execução Final

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos

Disciplina: Programas de Edição de Textos Professora: Érica Barcelos

Montar planilhas de uma forma organizada e clara.

Organização e Arquitetura de Computadores I

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

CRIANDO UM BANCO DE DADOS

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Unidade 7: Panes no Excel

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

ROTINAS PADRÕES DO SISTEMAS

Conceitos Importantes:

1. Instalei o DutotecCAD normalmente no meu computador mas o ícone de inicialização do DutotecCAD não aparece.

INF 1007 Programação II

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Análises Geração RI (representação intermediária) Código Intermediário

Arquitetura de Rede de Computadores

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Lição 1 - Criação de campos calculados em consultas

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

3. Arquitetura Básica do Computador

Controle do Arquivo Técnico

Banco de Dados BrOffice Base

1.2) Na tela seguinte, o primeiro item a ser selecionado é o Unidade Acumuladora1.

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Classificação e Pesquisa de Dados

BOM DIA!! ÁLGEBRA. Aula 3 COM JENNYFFER LANDIM. jl.matematica@outlook.com

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Utilização do SOLVER do EXCEL

2. A FERRAMENTA SOLVER (EXCEL)

Banco de Dados Microsoft Access: Criar tabelas

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

Transcrição:

Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli

Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos os links vazios estão no mesmo nível, ou seja, que a árvore está completa. A árvore que não está balanceada, define-se como degenerada d c d b d b f a Árvore binária balanceada. b (a) f c e g a (b) e Árvore binária Degenerada f g a (c) c e g Árvore binária Incompleta Balanceada h

Árvores Balanceadas Balanceamento Estático O balanceamento estático de uma árvore binária consiste em construir uma nova versão, reorganizando-a. Balanceamento Dinâmico: AVL Árvore AVL em homenagem aos matemáticos russos (Adelson- Velskii e Landism -1962) Uma árvore AVL é uma árvore binária de pesquisa onde a diferença em altura entre as subárvores esquerda e direita é no máximo 1 (positivo ou negativo). A essa diferença chamamos de fator de balanceamento de n (FatBal (n)). Essa informação deverá constar em cada nó de uma árvore balanceada

Árvores AVL Assim, para cada nodo podemos definir um fator de balanceamento (FB), que vem a ser um número inteiro igual a FB(nodo p) = altura(subárvore direita p) - altura(subárvore esquerda p) O Fator de uma folha é sempre Zero (0)

Árvores Balanceadas Exemplos de árvores AVL e árvores não-avl. Os números nos nodos representam o FB para cada nodo. Para uma árvore ser AVL os fatores de balanço devem ser necessariamente -1, 0, ou 1. Exemplos de árvores AVL Exemplos de árvores não AVL

BALANCEAMENTO DE ÁRVORES AVL Inicialmente inserimos um novo nodo na árvore. A inserção deste novo nodo pode ou não violar a propriedade de balanceamento. Caso a inserção do novo nodo não viole a propriedade de balanceamento podemos então continuar inserindo novos nodos. Caso contrário precisamos nos preocupar em restaurar o balanço da árvore. A restauração deste balanço é efetuada através do que denominamos ROTAÇÕES na árvore.

Árvores AVL Se quisermos manter a árvore balanceada a cada inserção, devemos ter um algoritmo que ajuste os fatores de balanceamento O algoritmo corrige a estrutura através de movimentação dos nós, ao que chamamos de rotação.

BALANCEAMENTO DE ÁRVORES AVL Exemplos Vamos considerar a seguinte árvore (os números ao lado dos nodos são o FB de cada nodo): A árvore acima está balanceada, como podemos observar pelos FB de cada nodo. Os casos possíveis de desbalanceamento são 2. Veremos cada um deles.

Tipo 1 - ROTAÇÃO DUPLA Ao inserir o número 5 na árvore. Esta inserção produziria a seguinte árvore: O nodo 8 fica com o FB -2 e tem um filho com FB +1. Neste caso o balanceamento é atingido com duas rotações, também denominada ROTAÇÃO DUPLA. Primeiro rotaciona-se o nodo com FB 1 para a esquerda.

Tipo 1 - ROTAÇÃO DUPLA A árvore fica: A seguir rotaciona-se o nodo que tinha FB -2 na direção oposta (direita neste caso).

Tipo 1 - ROTAÇÃO DUPLA A árvore fica: Os FB nos nodos voltaram a ficar dentro do esperado das árvores AVL. O caso simétrico ao explicado acima acontece com os sinais de FB trocados, ou seja, um nodo com FB +2 com um filho com FB -1. Também utilizariamos uma rotação dupla, mas nos sentidos contrários, ou seja, o nodo com FB -1 seria rotacionado para a direita e o nodo com FB +2 seria rotacionado para a esquerda.

Tipo 2 - ROTAÇÃO Simples Suponha que queremos inserir o nodo 3 na árvore inicial. A inserção produziria a seguinte árvore: A inserção do nodo 3 produziu um desbalanço no nodo 8 verificado pelo FB -2 neste nodo. Neste caso, como os sinais dos FB são os mesmos (nodo 8 com FB -2 e nodo 4 com FB -1) significa que precisamos fazer apenas uma ROTAÇÃO SIMPLES à direita no nodo com FB -2. No caso simétrico (nodo com FB 2) faríamos uma rotação simples à esquerda.

Tipo 2 - ROTAÇÃO Simples Após a rotação simples a árvore ficaria: Observe que os FB estão dentro do esperado para mantermos a propriedade de balanceamento de árvores AVL.

A descrição do algoritmo em pseudo-código para construção de uma árvore AVL: 1. Insira o novo nodo normalmente (ou seja, da mesma maneira que inserimos numa ABB); 2. Iniciando com o nodo pai do nodo recém-inserido, teste se a propriedade AVL é violada neste nodo, ou seja, teste se o FB deste nodo é maior do que abs(1). Temos aqui 2 possibilidades: 2.1 A condição AVL foi violada 2.1.1 Execute as operações de rotação conforme for o caso (Tipo 1 ou Tipo 2) 2.1.2 Volte ao passo 1 2.2 A condição AVL não foi violada. Se o nodo recém-testado não tem pai, ou seja, é o nodo raiz da árvore, volte para inserir novo nodo (Passo 1)

Dicas: Árvores AVL 1. Para identificarmos quando uma rotação é simples ou dupla observamos os sinais de FatBal: se o sinal for igual, a rotação é simples. se o sinal for diferente a rotação é dupla. 2. Se FB+ rotação para esquerda 3. Se FB- rotação para direita

Exercícios

Exercício 1 Considere a inserção dos seguintes valores (nesta ordem) em uma árvore AVL: 5,3,8,2,4,7,10,1,6,9,11. Para essas inserções nenhuma rotação é necessária. Desenhe a árvore AVL resultante e determine o fator de balanceamento de cada nó.

Exercício 2 Construir uma árvore AVL com os seguintes dados: a) Inserir inicialmente 10, 20, 30 b) Se necessário fazer balanceamento c) Inserir 25 e 27 d) Se necessário fazer balanceamento

Resolução do Exercício 2 A inserção dos 3 primeiros números resulta na seguinte árvore: 10 +2 20 +1 30 0 Após a inserção do elemento 30 a árvore fica desbalanceada. O caso acima é do Tipo 2. Fazemos uma rotação para a esquerda no nodo com FB 2. A árvore resultante fica: 20 0 0 10 30 0

Resolução do Exercício 2 O passo seguinte é inserir os nodos 25 e 27. A árvore fica desbalanceada apenas após a inserção do nodo 27 Este caso é do Tipo 1. O nodo 30 tem FB -2 e o seu nodo filho tem FB 1. Precisamos efetuar uma rotação dupla, ou seja, uma rotação simples à esquerda do nodo 25, resultando: 20 +2 0 10 30-2 25 +1 27 0 20 +2 0 10 30-2 27-1 25 0

Resolução do Exercício 2 seguida de uma rotação simples à direita do nodo 30, resultando: 20 +1 0 10 27 0 0 25 30 0 e a árvore está balanceada.

Exercício 3 Determinado sistema armazena registros por chaves numéricas em uma árvore AVL. Nessa árvore são inseridos os seguintes valores: 20,10,5,30,25,27 e 28 nessa ordem. Apresente passo a passo como a árvore vai sendo construída. Realize as rotações necessárias e indique qual rotação foi realizada em cada caso.

Resolução: Exercício 3 1) Inserção das chaves 20 e 10, nessa ordem A árvore ficou pendendo para a esquerda O fator de balanceamento do nó cuja chave é 20 é -1. O fator de uma folha é sempre 0 (zero). 2)...Continuar as inserções 20 (-1) 10 (0)

Árvores Multivias (Multiway tree)

Árvores Multivias Em uma árvore binária, cada nó possui um item de dado e pode ter até dois filhos. Se permitirmos o uso de mais itens de dados e filhos por nó, o resultado é uma árvore Multivias ou M-vias (multiway tree). Uma Estrutura Multivia com algoritmo eficiente deve considerar: Tempo de acesso a cada nó Balanceamento da árvore. As árvores 2-3-4, são árvores multivias que podem ter até quatro filhos e três itens de dados por nó.

Árvores 2-3-4 Árvores 2-3-4 são interessantes por várias razões: São árvores balanceadas. Fáceis de programar. Servem como uma introdução para árvores B.

Árvores 2-3-4 A figura mostra uma pequena árvore 2-3-4. Cada nó pode conter um, dois ou três itens de dados. 50 30 60 70 80 10 20 40 55 62 64 66 75 83 86

Árvores 2-3-4 Um nó interno deve sempre ter um filho a mais que seus itens de dados. Um nó folha, ao contrário, não possui filhos, mas ele pode conter um, dois ou três itens de dados. Nós vazios não são permitidos. Devido a uma árvore 2-3-4 possuir nós com até quatro filhos, ela é chamada de árvore multivias de ordem 4 (multiway tree of order 4).

Árvores 2-3-4 O 2, 3 e 4 no nome árvore 2-3-4 referem-se a quantos links para filhos podem potencialmente estar contidos em um dado nó. Para nós internos (não folhas), três combinações são possíveis: um nó com um item de dado sempre possuirá dois filhos; um nó com dois itens de dados sempre possuirá três filhos; um nó com três itens de dados sempre possuirá quatro filhos. 50 30 60 70 80 10 20 40 55 62 64 66 75 83 86

Árvores 2-3-4 Por que uma árvore 2-3-4 não échamada de árvore 1-2-3-4? Um nó não pode ter somente um filho, como os nós na árvore binária Um nó com um item de dado precisa sempre ter dois links, a menos que seja uma folha, neste caso, ele não possui links.

Árvores 2-3-4 Um nó com dois links é chamado 2-nós, Um nó com três links é chamado 3-nós Um nó com quatro links é chamado 4-nós 25 0 1 2-nós 12 33 37 40 62 0 1 2 27 33 51 55 59 83 3-nós 0 1 50 75 95 2 3 4-nós 30 35 55 78 100 105

Árvores 2-3-4 X Árvore Binária Em uma árvore binária, todos os filhos com chaves menores que a chave do nó estão enraizados no nó filho à esquerda, e todos os filhos com chaves maiores ou iguais a chave do nó estão enraizados no nó filho à direita. Na árvore 2-3-4 o princípio é o mesmo, mas existe algo mais:

Árvores 2-3-4 todos os itens de dados na sub-árvore enraizada no filho 0, possuem valores menores do que a chave 0; todos os itens de dados na sub-árvore enraizada no filho 1, possuem valores maiores do que a chave 0, mas menores do que a chave1; todos os itens de dados na sub-árvore enraizada no filho 2, possuem valores maiores do que a chave 1, mas menores do que a chave2; todos os itens de dados na sub-árvore enraizada no filho 3, possuem valores maiores do que a chave 2. Valores duplicados geralmente não são permitidos. Deste modo nós não necessitamos nos preocupar com a comparação de chaves iguais. A B C 0 1 2 3 Nó com chaves menores do que A Nó com chaves entre A e B Nó com chaves entre B e C Nó com chaves maiores do que C

Pesquisa em árvores 2-3-4 Exemplo: Para pesquisar por um item de dado com a chave 64 na árvore da figura, você inicia na raiz, porém não encontra o item. Por que 64 é maior do que 50, você vai para o filho 1, o qual nós representamos com 60,70 e 80. Você não encontra o item de dado, assim você precisa passar para o próximo filho. Aqui, devido a 64 ser maior do que 60, mas menor do que 70, você vai novamente para o filho 1. Desta vez você encontra o item específico no link 62, 64 e 66. 50 30 60 70 80 10 20 40 55 62 64 66 75 83 86

Inserção em árvore 2-3-4 Novos itens de dados são sempre inseridos nas folhas. Se os itens foram inseridos em um nó com filhos, então o número de filhos necessitará ser mudado para manter a estrutura da árvore, o que estipula que esta árvore deve ter um filho a mais do que os itens de dados em um nó. O processo de inserção inicia pela pesquisa do nó folha apropriado. Se nós que não estão cheios são encontrados durante a pesquisa, a inserção é fácil. A inserção pode envolver a movimentação de um ou dois itens em um nó. As chaves deverão estar na ordem correta após o novo item ser inserido.

Exemplo 1: Inserção em árvore 2-3-4 -Inserção de um item (18) sem divisão do nó a) Antes da inserção 28 55 11 42 74 5 9 13 23 30 44 47 63 67 72 97 -O item 23 vai ser deslocado para direita para abrir espaço para inserir o item 18. b) Depois da inserção 28 55 11 42 74 5 9 13 18 23 30 44 47 63 67 72 97 18 é inserido 23 é deslocado para direita

Exemplo 2 - Inserção em árvore 2-3-4 Com Divisão de nós As inserções tornam-se mais complicadas se um nó cheio é encontrado no caminho abaixo do ponto de inserção. Quando isto acontece, o nó precisa ser dividido (split). É este processo de divisão que mantêm a árvore balanceada. O tipo de árvore 2-3-4 que estamos vendo é freqüentemente chamada de árvore 2-3-4 topdown, por que os nós são divididos de maneira para baixo do ponto de inserção.

Inserção em árvore 2-3-4 Chamaremos os itens de dados a serem divididos por A, B e C. assumimos que o nó a ser dividido não é o raiz, nós examinaremos a divisão da raiz depois a) Antes da inserção 62 inserção do 99 29 83 92 104 nó a ser dividido A B C 15 21 47 74 87 89 97 112

Inserção em árvore 2-3-4 a) Antes da inserção 62 inserção do 99 29 83 92 104 nó a ser dividido A B C 15 21 47 74 87 89 97 112 Um novo nó vazio é criado. Ele é parente (sibling) do nó que está sendo dividido, e é colocado a sua direita; O item de dado C é movido para o novo nó; O item de dado B é movido para o pai do nó que está sendo dividido; O item de dado A fica aonde ele está; Os dois filhos mais à direita são desconectados do nó que está sendo dividido e são conectados no novo nó. b) Após a inserção 62 92 92 movido para cima 83 fica no lugar B 104 foi p/ direita 29 83 104 A novo nó 15 21 47 74 87 89 97 99 112 C 99 inserido

Exemplo 3 - Inserção em árvore 2-3-4 Dividindo a raiz Quando uma raiz cheia é encontrada no inicio da pesquisa para encontrar o ponto de inserção, o resultado da divisão é ligeiramente mais complicado: inserção do 41 a) Antes da inserção 26 49 72 raiz a ser dividido A B C 9 13 31 35 52 61 82

Inserção em árvore 2-3-4 um novo nó é criado, tornandose a nova raiz, e os pais do novo nó são divididos; um segundo novo nó é criado, tornando-se parente (sibling) do nó que está sendo dividido; inserção do 41 a) Antes da inserção 26 49 72 A B C 9 13 31 35 52 61 82 o item de dado C é movido para o novo nó parente; o item de dado B é movido para a nova raiz; o item de dado A é deixado aonde está; os dois filhos mais a direita do nó que está sendo dividido são desconectados dele e conectados no novo nó do lado direito. raiz a ser dividido b) Após a inserção 49 é movido p/cima 26 fica no lugar 49 B novo nó raiz 26 72 movido p/ direita 72 novo nó à direita A C 9 13 31 35 41 52 61 82 41 inserido

Árvores B

Árvore B São árvores de pesquisa balanceadas especialmente projetadas para a pesquisa de informação em discos magnéticos e outros meios de armazenamento secundário. Minimizam o número de operações de movimentação de dados (escrita/leitura) numa pesquisa ou alteração. O grau de um nó pode ser alto. Podem ser consideradas como uma generalização natural das árvores de pesquisa binárias.

Árvores B As árvores são uma boa abordagem para dados em memória. Mas, as árvores trabalham com arquivos? Elas trabalham, mas um tipo diferente de árvore precisa ser usado para dados externos do que para dados em memória. A árvore apropriada é um árvore múltivias, parecida com uma árvore 2-3-4, mas com muito mais itens de dados por nó Ela se chama Árvore B (tree-b). As árvores B foram concebidas como estrutura apropriada para armazenamento externo por R. Bayer e E. M. McCreight em 1972. Árvores M-Vias permanentemente balanceadas são chamadas de Árvore B.

Árvores B - Um bloco por nó O acesso a disco é mais eficiente quando o dado é lido ou escrito em um bloco de uma só vez. Em uma árvore, a entidade que contêm dados é o nó. Ideal: armazenar um bloco inteiro de dados em cada nó da árvore. Deste modo, ler um nó acessa um conjunto máximo de dados em um curto espaço de tempo.

Árvores B - Links Em uma árvore, precisamos também armazenar os links para outros nós. Em uma árvore em memória, estas ligações são referências (ou ponteiros, em linguagens como Pascal e C) para os nós em outras partes da memória. Para as árvores armazenadas em um arquivo em disco, as ligações (links) são números de blocos em um arquivo.

Árvores B x Árvores 2-3-4 Dentro de cada nó os dados são ordenados seqüencialmente pela chave, como nas árvores 2-3-4. A estrutura de uma árvore B é similar a de uma árvore 2-3-4, exceto que na árvore B existem mais itens de dados por nó e mais links para nós filhos.

Árvores B Características A raiz tem no mínimo uma chave e dois filhos Uma folha tem no mínimo d chaves e não tem filhos Todas as folhas estão no mesmo nível (balanceamento)

Pesquisa em Árvores B Primeiro, o bloco contendo a raiz é lido. O algoritmo de pesquisa então inicia a verificação de cada um dos registros (se ele não estiver cheio, tantos quantos o nó atualmente armazena) iniciando pelo registro 0. Quando ele encontra um registro com chave maior, ele sabe que deve ir para o filho que reside entre este registro e o precedente. Este processo continua até o nó correto ser encontrado. Se uma folha é alcançada sem encontrar a chave específica, a pesquisa não obteve sucesso.

Inserção em Árvores B Em uma árvore B é importante manter um nó tão cheio quanto possível; deste modo cada acesso à disco, o qual lê uma entrada de um nó, pode adquirir o máximo de quantidade de dados.

Construção de uma pequena árvore B A figura (a) mostra um nó raiz que já está cheio; Itens com chaves 20,40,60 e 80 já foram inseridas na árvore. Um novo item de dado com a chave 70 deve inserido, resultando na divisão de um nó. A raiz está sendo dividida, dois novos nós são criados: uma nova raiz e um novo nó para a direita do que está sendo dividido. (a) 20 40 60 80 70 20 40 60 70 80

Construção de uma pequena árvore B Na figura (b) inserimos mais dois itens: 10 e30. Eles preenchem totalmente ofilho da esquerda, tal como apresentado nas figura (c). O próximo item a ser inserido, esquerda, como visto na figura (d). 15, divide o filho à Aqui oitem 20 foi promovido para cima, na raiz. (b) 60 10 30 20 40 70 80 (c) 60 15 10 15 20 30 40 10 20 30 40 70 80 (d) 20 60 10 15 30 40 70 80

Construção de uma pequena árvore B Na fig. (e) três itens, 75,85 e 90, são inseridos O terceiro filho é dividido, causando a criação de um novo nó e a promoção do item intermediário, 80, para a raiz. O resultado disto é visto na figura (f). (e) 20 60 75 85 90 70 75 80 85 90 10 15 30 40 70 80 20 60 80 (f) 10 15 30 40 70 75 85 90

Construção de uma pequena árvore B Novamente três itens, 25, 35 e 50, são adicionados fig. (g) Os primeiros dois itens enchem totalmente o segundo filho E o terceiro filho é divido, provocando a criação de um novo nó e a promoção do item intermediário, 35, para a raiz, como pode ser visto na figura (h). (g) 20 60 80 25 35 50 25 30 35 40 50 10 15 30 40 70 75 85 90 20 35 60 80 (h) 10 15 25 30 40 50 70 75 85 90

Construção de uma pequena árvore B Agora a raiz está cheia. Contudo, inserções subseqüentes não necessariamente causarão a divisão do nó, porque os nós são divididos somente quando uma nova inserção em um nó cheio é efetuada, não quando um nó cheio é encontrado em uma pesquisa sobre a árvore. Assim, 22 e 27 são inseridos no segundo filho sem causar qualquer divisão, como apresentado na figura (j). 20 35 60 80 22 27 (i) 10 15 25 30 40 50 70 75 85 90 20 35 60 80 (j) 10 15 22 25 27 30 40 50 70 75 85 90

O próximo item a ser inserido, 32, não causa uma divisão, na realidade, ele causa duas divisões. O segundo nó filho, está cheio, deste modo, ele é dividido, como visto na figura (l). O item 27, promovido a partir da divisão, não foi colocado no seu lugar porque a raiz está cheia. Portanto a raiz também precisa ser dividida, resultando no arranjo presente na figura (M). 20 35 60 80 32 (k) 22 25 27 30 32 10 15 22 25 27 30 40 50 70 75 85 90 (l) 20 35 60 80 27 20 27 35 60 80 10 15 22 25 40 50 70 75 85 90 (M) 35 20 27 60 80 10 15 22 25 30 32 40 50 70 75 85 90