Árvores b de busca mc202 - estrutura de dadosafalcao/mc202/aulas16a18-arvoreb.pdfmenor que o...
TRANSCRIPT
![Page 1: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/1.jpg)
Árvores B de busca !
MC202 - Estrutura de dados
Alexandre Xavier Falcão ([email protected])!Thiago Vallin Spina ([email protected])
1
![Page 2: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/2.jpg)
Árvores B
● Generalização de árvores binárias de busca
● Otimizada para acesso a grandes volumes de dados em disco
● Nós contêm múltiplas chaves e múltiplos filhos
2
![Page 3: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/3.jpg)
Árvores B: Motivação● Acesso a dados em disco é lento (ordens de
magnitude mais devagar que na memória – milissegundos versus nanosegundos)
● Elementos em disco são armazenados contiguamente em blocos de uma mesma faixa (''páginas'')
● O acesso de dados no HD é otimizado para trazer múltiplas páginas por vez
3
![Page 4: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/4.jpg)
Árvores B: Motivação● Acesso a dados em disco é lento (ordens de
magnitude mais devagar que na memória – milissegundos versus nanosegundos)
● Elementos em disco são armazenados contiguamente em blocos de uma mesma faixa (''páginas'')
● O acesso de dados no HD é otimizado para trazer múltiplas páginas por vez
3
![Page 5: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/5.jpg)
Acesso a dados● Suponha, por exemplo, um arquivo binário amarzenado em disco com vários registros
de tamanho fixo, contendo informações sobre clientes de uma empresa
● Cada registro é identificado por uma chave primária
!
!
● O Sistema Operacional agrupa esses registros por página e cada operação de leitura/escrita envolve trazer para a memória cache ou levar para o disco uma página
● Leitura e gravações são custosas e o objetivo é minimizá-las quando inserimos, buscamos e removemos registros
● O arquivo de dados normalmente não cabe na memória principal
10 15 5
...0 1 2RRN
Registros
4
![Page 6: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/6.jpg)
Acesso a dados: Estratégia● Guardar a chave dos registros em um arquivo separado (índice primário)
● Menor que o arquivo de registros (cabe parcial/totalmente na memória)
● As operações de inserção, remoção e busca envolvem carregar o índice de acordo com alguma estrutura de dados
!
!
● Exemplo: durante a busca, ao encontrar o elemento de acordo com sua chave primária o acesso aos dados é feito diretamente via seu RRN (relative record number)
10 0 155
0Página
Índice 12
1...
5
![Page 7: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/7.jpg)
Acesso a dados: Exemplo com AVL● Supondo 7 registros por página em uma árvore binária AVL, com
2 acessos a disco encontramos qualquer um de 63 registros
● O número de acessos é , onde N é o número de registros e k o número de registros por página
logk+1(N + 1)
6
![Page 8: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/8.jpg)
Acesso a dados: Exemplo com AVL● Para N = 227-1 registros e k = 511 registros por página, apenas 3
acessos a disco seriam necessários
● Contudo, árvores AVL são construídas de cima para baixo, envolvendo o acesso à outras páginas para sua manutenção
7
![Page 9: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/9.jpg)
Árvores B● Criadas por R. Bayer e E. M. McCreight em 1972
● Armazenam até b > 1 registros com chave por nó (ordem da árvore)
● Construção de baixo para cima
● Na memória, árvores AVL requerem acessos para achar um nó, ao passo que árvores B necessitam de
* Omitimos o RRN ou outros dados do registro na representação gráfica
log2(N + 1)
logb(N + 1)
8
![Page 10: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/10.jpg)
Árvores B: Definição● Uma árvore é considerada B de ordem b > 1 se:
1. Todas as folhas tem o mesmo nível
2. Cada nó interno tem um número variável r de registros e r+1 filhos, onde:
A. se o nó não é raiz
B. se o nó é raiz
3. Cada folha tem um número variável r de registros obedecendo à mesma restrição do item 2
�b
2
⌫ r b
1 r b
9
![Page 11: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/11.jpg)
Árvores B: Exemplo● Árvore B de ordem b = 3
10
![Page 12: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/12.jpg)
Árvores B● Em uma árvore B com ordem b = 255 pode-se armazenar:
Mínimo Máximo
Nível Nós Registros Nós Registros
1 1 1 1 255
2 2 2x127 256 256x255
3 2x128 2x128x127 256x256 256
4 32.768 4.161.536 16.777.216 4.278.190.080
11
![Page 13: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/13.jpg)
Árvores B: Implementação● Em cada nó, os elementos são guardados por ordem crescente
de chave
br
12
![Page 14: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/14.jpg)
Árvores B: Busca de Elementos
● Como achar o elemento 48?
13
![Page 15: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/15.jpg)
Árvores B: Implementação da Busca
A
B
C D E
14
![Page 16: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/16.jpg)
Árvores B: Implementação da Busca
nivel = 1, aux = A, i = 0 A
B
C D E
14
![Page 17: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/17.jpg)
Árvores B: Implementação da Busca
nivel = 1, aux = A, i = 0 A
B
C D E
14
![Page 18: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/18.jpg)
Árvores B: Implementação da Busca
nivel = 2, aux = B, i = 0 A
B
C D E
14
![Page 19: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/19.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 2, aux = B, i = 1
14
![Page 20: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/20.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 2, aux = B, i = 1
14
![Page 21: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/21.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 3, aux = C, i = 0
14
![Page 22: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/22.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 3, aux = C, i = 2
14
![Page 23: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/23.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 3, aux = C, i = 2
14
![Page 24: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/24.jpg)
Árvores B: Implementação da Busca
A
B
C D E
nivel = 3, aux = C, i = 2
● Exercício: a busca no vetor leva tempo linear na ordem b para verificar cada nó, muito embora os registros estão ordenados por chave no vetor. Otimize a busca! 14
![Page 25: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/25.jpg)
Árvores B: Inserção de Elementos
● Três casos:
1. Ávore vazia: cria nó, insere registro e retorna verdadeiro para indicar que a altura da árvore aumentou.
2. Encontre o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira-o e retorne falso.
3. Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
● Este caso pode se repetir recursivamente até que o caso 2 ocorra (a árvore aumenta de altura no pior dos casos -> caso especial de raiz cheia).
15
![Page 26: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/26.jpg)
Árvores B: Exemplos de Inserção
● Árvore inicial
!
!
!
!
!
● Insira 25
● Insira 28
● Insira 32
30
20 35 38
16
![Page 27: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/27.jpg)
Árvores B: Exemplos de Inserção
● Insira 25:
● Caso 2: Encontre recursivamente o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira o registro e retorne falso.
30
20 35 38
17
![Page 28: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/28.jpg)
Árvores B: Exemplos de Inserção
● Insira 25:
● Caso 2: Encontre recursivamente o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira o registro e retorne falso.
30
20 35 38
17
![Page 29: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/29.jpg)
Árvores B: Exemplos de Inserção
● Insira 25:
● Caso 2: Encontre recursivamente o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira o registro e retorne falso.
30
20 35 38
17
![Page 30: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/30.jpg)
Árvores B: Exemplos de Inserção
● Insira 25:
● Caso 2: Encontre recursivamente o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira o registro e retorne falso.
30
20 35 38
17
![Page 31: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/31.jpg)
Árvores B: Exemplos de Inserção
● Insira 25:
● Caso 2: Encontre recursivamente o nó folha onde será feita a inserção e a posição da inserção por busca no nó. Se o nó acomoda o registro (r < b), então insira o registro e retorne falso.
30
20 25 35 38
17
![Page 32: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/32.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 38
Árvores B: Exemplos de Inserção
18
![Page 33: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/33.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 38
Árvores B: Exemplos de Inserção
18
![Page 34: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/34.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 38
Árvores B: Exemplos de Inserção
18
![Page 35: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/35.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 38
Árvores B: Exemplos de Inserção
18
![Page 36: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/36.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 3828
Árvores B: Exemplos de Inserção
18
![Page 37: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/37.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 3828
30
35 38
Árvores B: Exemplos de Inserção
18
![Page 38: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/38.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 3828
30
20 35 3828
Árvores B: Exemplos de Inserção
18
![Page 39: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/39.jpg)
● Insira 28:
• Caso 3: o o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
30
20 25 35 3828
30
20 35 38
25
28
Árvores B: Exemplos de Inserção
18
![Page 40: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/40.jpg)
● Insira 25 no nó pai:
• Volta recursiva da inserção.
30
20 35 38
25
28
Árvores B: Exemplos de Inserção
19
![Page 41: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/41.jpg)
● Insira 25 no nó pai:
• Volta recursiva da inserção.
30
20 35 38
25
28
25 30
20 35 3828
Árvores B: Exemplos de Inserção
19
![Page 42: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/42.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828
Árvores B: Exemplos de Inserção
20
![Page 43: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/43.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828
Árvores B: Exemplos de Inserção
20
![Page 44: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/44.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828
Árvores B: Exemplos de Inserção
20
![Page 45: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/45.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828
Árvores B: Exemplos de Inserção
20
![Page 46: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/46.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828 32
Árvores B: Exemplos de Inserção
20
![Page 47: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/47.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
25 30
20 35 3828
25 30
20 3828 32
Árvores B: Exemplos de Inserção
20
![Page 48: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/48.jpg)
● Insira 32:
• Caso contrário, o nó folha não acomoda o novo registro e divide-se em dois após colocá-lo no local candidato. Em seguida, o registro com chave mediana info[m], onde m = (b+1)/2, deve ser inserido no nó pai e a função retorna verdadeiro.
• Insere 35 recursivamente no nó pai
25 30
20 35 3828
3525 30
20 3828 32
Árvores B: Exemplos de Inserção
20
![Page 49: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/49.jpg)
● Insere 35 recursivamente no nó pai
25 30
20 3828
35
32
Árvores B: Exemplos de Inserção
21
![Page 50: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/50.jpg)
● Insere 35 recursivamente no nó pai
● Caso 3: nó pai (raiz) cheio
25 30
20 3828
35
32
Árvores B: Exemplos de Inserção
21
![Page 51: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/51.jpg)
● Insere 35 recursivamente no nó pai
● Caso 3: nó pai (raiz) cheio
● Caso especial: quando a raiz está cheia ela é quebrada em duas e a chave mediana (30) vira uma nova raiz
25 30
20 3828
35
32
30
25
20 3828 32
35
Árvores B: Exemplos de Inserção
21
![Page 52: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/52.jpg)
● Caso especial: quando a raiz está cheia ela é quebrada em duas e a chave mediana (30) vira uma nova raiz
25
20 3828
30
32
35
Árvores B: Exemplos de Inserção
22
![Page 53: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/53.jpg)
● Caso especial: quando a raiz está cheia ela é quebrada em duas e a chave mediana (30) vira uma nova raiz
● Árvore cresce de altura
25
20 3828
30
32
35 25
20 3828 32
35
30
Árvores B: Exemplos de Inserção
22
![Page 54: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/54.jpg)
Árvores B: Implementação da Inserção
23
![Page 55: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/55.jpg)
Árvores B: Implementação da Inserção
23
![Page 56: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/56.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 57: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/57.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 58: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/58.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 59: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/59.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 60: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/60.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 61: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/61.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 62: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/62.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 63: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/63.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 64: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/64.jpg)
30
20 27 35 38
● Insira *valor = 25
24
![Page 65: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/65.jpg)
30
20 27 35 38
● Insira *valor = 25
27
24
![Page 66: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/66.jpg)
30
20 27 35 38
● Insira *valor = 25
25 27
24
![Page 67: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/67.jpg)
30
20 27 35 38
● Insira *valor = 25
25 27
24
30
20 22 35 3825 27
![Page 68: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/68.jpg)
● Insira *valor = 22
30
20 22 35 3825 27
25
![Page 69: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/69.jpg)
● Insira *valor = 22
30
20 22 35 3825 27
25
![Page 70: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/70.jpg)
● Insira *valor = 22
● Recursão insere 22 no nó pai
30
20 22 35 3825 27
26
![Page 71: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/71.jpg)
● Insira *valor = 22
● Recursão insere 22 no nó pai
30
20 22 35 3825 27
20
30
35 3825 27
22
26
![Page 72: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/72.jpg)
Árvores B: Remoção de Elementos
● Reduzida a remover elementos da folha
● Para remover registro em nó interno, ele é trocado por seu menor sucessor (na própria folha ou maior predecessor de outro nó)
27
![Page 73: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/73.jpg)
Árvores B: Remoção de Elementos
● Três casos:
1. Nó folha tem registros. Neste caso, remova o registro e retorne falso (altura da árvore não diminuiu).
2. Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
3. Nó folha tem registros e não há a possibilidade de empréstimo. Deve ser feita a união do nó folha com seu irmão, inserindo o registro pai no meio deles. A altura pode diminuir neste caso, então retorne verdadeiro.
r > bb/2c
r bb/2c
r bb/2c
28
![Page 74: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/74.jpg)
Árvores B: Exemplos de Remoção
● Árvore inicial
!
!
!
!
!
● Remova 28
● Remova 25
● Remova 30
30
25 28 35 38
29
![Page 75: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/75.jpg)
● Remova 28:
● Caso 1: Nó folha tem registros. Neste caso, remova o registro e retorne falso (altura da árvore não diminuiu).
Árvores B: Exemplos de Remoção
30
25 28 35 38
r > bb/2c
30
![Page 76: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/76.jpg)
● Remova 28:
● Caso 1: Nó folha tem registros. Neste caso, remova o registro e retorne falso (altura da árvore não diminuiu).
Árvores B: Exemplos de Remoção
30
25 28 35 38
r > bb/2c
30
![Page 77: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/77.jpg)
● Remova 28:
● Caso 1: Nó folha tem registros. Neste caso, remova o registro e retorne falso (altura da árvore não diminuiu).
Árvores B: Exemplos de Remoção
30
25 28 35 38
r > bb/2c
30
![Page 78: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/78.jpg)
● Remova 25:
● Caso 2: Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
Árvores B: Exemplos de Remoção
r bb/2c
30
25 35 38
31
![Page 79: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/79.jpg)
● Remova 25:
● Caso 2: Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
Árvores B: Exemplos de Remoção
r bb/2c
30
25 35 38
31
![Page 80: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/80.jpg)
● Remova 25:
● Caso 2: Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
Árvores B: Exemplos de Remoção
r bb/2c
30
25 35 38
31
![Page 81: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/81.jpg)
● Remova 25:
● Caso 2: Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
Árvores B: Exemplos de Remoção
r bb/2c
30
25 35 38 30 3835 38
31
![Page 82: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/82.jpg)
● Remova 25:
● Caso 2: Nó folha tem registros, mas um dos irmãos do nó (mais velho, à direita, ou mais novo, à esquerda) tem um registro para emprestar. O pai desce e o irmão sobe, retornando falso.
Árvores B: Exemplos de Remoção
r bb/2c
30
25 35 38 30 38
35
31
![Page 83: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/83.jpg)
● Remova 30:
● Caso 3: Nó folha tem registros e não há a possibilidade de empréstimo. Deve ser feita a união do nó folha com seu irmão, inserindo o registro pai no meio deles. A altura pode diminuir neste caso, então retorne verdadeiro.
Árvores B: Exemplos de Remoção
r bb/2c
32
![Page 84: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/84.jpg)
● Remova 30:
● Caso 3: Nó folha tem registros e não há a possibilidade de empréstimo. Deve ser feita a união do nó folha com seu irmão, inserindo o registro pai no meio deles. A altura pode diminuir neste caso, então retorne verdadeiro.
Árvores B: Exemplos de Remoção
r bb/2c
35
30 38
32
![Page 85: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/85.jpg)
● Remova 30:
● Caso 3: Nó folha tem registros e não há a possibilidade de empréstimo. Deve ser feita a união do nó folha com seu irmão, inserindo o registro pai no meio deles. A altura pode diminuir neste caso, então retorne verdadeiro.
Árvores B: Exemplos de Remoção
r bb/2c
35
30 38
3530 38
32
![Page 86: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/86.jpg)
● Remova 30:
● Caso 3: Nó folha tem registros e não há a possibilidade de empréstimo. Deve ser feita a união do nó folha com seu irmão, inserindo o registro pai no meio deles. A altura pode diminuir neste caso, então retorne verdadeiro.
Árvores B: Exemplos de Remoção
r bb/2c
35
30 38 35 38
3530 38
32
![Page 87: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/87.jpg)
Árvores B: Exemplos de Remoção 2
● Árvore inicial
!
!
!
!
!
● Remova 50
● Remova 150
125
33
17 50 83 203
3 5 20 35 48 51 80 85 150 205
![Page 88: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/88.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
![Page 89: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/89.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
1. Como a chave 50 está em um nó interno, devemos buscar seu maior antecessor em um nó folha e trocar ambos de lugar
125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
![Page 90: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/90.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
1. Como a chave 50 está em um nó interno, devemos buscar seu maior antecessor em um nó folha e trocar ambos de lugar
125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
![Page 91: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/91.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
1. Como a chave 50 está em um nó interno, devemos buscar seu maior antecessor em um nó folha e trocar ambos de lugar
125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
48
50
![Page 92: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/92.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
1. Como a chave 50 está em um nó interno, devemos buscar seu maior antecessor em um nó folha e trocar ambos de lugar
2. Em seguida chamamos a função recursivamente para remover 50 no nó folha correspondente, como anteriormente
125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
48
50
![Page 93: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/93.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 50
1. Como a chave 50 está em um nó interno, devemos buscar seu maior antecessor em um nó folha e trocar ambos de lugar
2. Em seguida chamamos a função recursivamente para remover 50 no nó folha correspondente, como anteriormente
3. Caso 1 de remoção125
34
17 50 83
3 5 20 35 48 51 80 20585 203
20383
150
125
48
50
![Page 94: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/94.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 150
125
35
17 48 83 203
3 5 20 35 51 80 85 150 205
![Page 95: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/95.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 150
1. Ache recursivamente a chave correspondente
125
35
17 48 83 203
3 5 20 35 51 80 85 150 205
![Page 96: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/96.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 150
1. Ache recursivamente a chave correspondente
2. Elimine o elemento
125
35
17 48 83 203
3 5 20 35 51 80 85 150 205
![Page 97: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/97.jpg)
Árvores B: Exemplos de Remoção 2
● Remova 150
1. Ache recursivamente a chave correspondente
2. Elimine o elemento
3. Trate o underflow do filho no retorno da recursão
125
35
17 48 83 203
3 5 20 35 51 80 85 150 205
![Page 98: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/98.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
125
36
17 48 83 203
3 5 20 35 51 80 85 205
![Page 99: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/99.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
● Verifica casos 1, 2, 3
125
36
17 48 83 203
3 5 20 35 51 80 85 205
![Page 100: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/100.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
● Verifica casos 1, 2, 3
• Caso 3:
125
36
17 48 83 203
3 5 20 35 51 80 85 205
![Page 101: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/101.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
● Verifica casos 1, 2, 3
• Caso 3:
1. Empurra chave para baixo
125
36
17 48 83 203
3 5 20 35 51 80 85 205203
![Page 102: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/102.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
● Verifica casos 1, 2, 3
• Caso 3:
1. Empurra chave para baixo
2. Faz união com o nó irmão (neste caso, [vazio] + [203, 205, _ ])
125
36
17 48 83 203
3 5 20 35 51 80 85 205203 205
![Page 103: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/103.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #1 (volta da recursão #1)
● Verifica casos 1, 2, 3
• Caso 3:
1. Empurra chave para baixo
2. Faz união com o nó irmão (neste caso, [vazio] + [203, 205, _ ])
3. Elimina o outro nó 125
36
17 48 83 203
3 5 20 35 51 80 85 205203 205
![Page 104: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/104.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
125
37
17 48 83
3 5 20 35 51 80 20585 203 205
![Page 105: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/105.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
● Verifica casos 1, 2, 3
125
37
17 48 83
3 5 20 35 51 80 20585 203 205
![Page 106: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/106.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
● Verifica casos 1, 2, 3
• Caso 2:
125
37
17 48 83
3 5 20 35 51 80 20585 203 205
![Page 107: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/107.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
● Verifica casos 1, 2, 3
• Caso 2:
1. Empurra a chave pai 125 para baixo
125
37
17 48 83
3 5 20 35 51 80 20585 203 205
125
![Page 108: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/108.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
● Verifica casos 1, 2, 3
• Caso 2:
1. Empurra a chave pai 125 para baixo
2. Empresta a maior chave do irmão à esquerda (83) -> caso o irmão não possa emprestar, verificar o irmão à direita (caso simétrico)
125
37
17 48 83
3 5 20 35 51 80 20585 203 205
125
83
![Page 109: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/109.jpg)
Árvores B: Exemplos de Remoção 2
● Tratamento de underflow #2 (volta da recursão #2)
● Verifica casos 1, 2, 3
• Caso 2:
1. Empurra a chave pai 125 para baixo
2. Empresta a maior chave do irmão à esquerda (83) -> caso o irmão não possa emprestar, verificar o irmão à direita (caso simétrico)
3. O nó entre 83 e 125 acompanha a chave pai125
37
17 48 83
3 5 20 35 51 80 205203 205
125
85
83
![Page 110: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/110.jpg)
Árvores B: Implementação da Remoção
38
![Page 111: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/111.jpg)
Árvores B: Implementação da Remoção
38
![Page 112: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/112.jpg)
39
![Page 113: Árvores B de busca MC202 - Estrutura de dadosafalcao/mc202/aulas16a18-ArvoreB.pdfMenor que o arquivo de registros (cabe parcial/totalmente na memória) As operações de inserção,](https://reader035.vdocuments.site/reader035/viewer/2022081403/6094f85bef884b137a594429/html5/thumbnails/113.jpg)
Árvores B: Implementação da Remoção
40
● IMPORTANTE: a redução da altura da árvore ocorre no caso 3, quando a recursão chegou na raiz e utilizou a única chave restante para unir dois filhos em underflow
● No algoritmo anterior, isso deve ser tratado fora da função ArvBRemoveRec, avaliando se o retorno da mesma foi 1 e se ocorreu underflow (*underflow == 1)
● No caso, *underflow será 1 porque ao utilizar a única chave para tratar o underflow de seus filhos, a raiz ficará vazia e VerificaUnderflow atualizará a variável apropriadamente