logo

B+ Drzewo

B+ Tree jest rozszerzeniem B Tree, które umożliwia wydajne operacje wstawiania, usuwania i wyszukiwania.

W drzewie B klucze i rekordy mogą być przechowywane zarówno w węzłach wewnętrznych, jak i liściach. Podczas gdy w drzewie B+ rekordy (dane) mogą być przechowywane tylko w węzłach-liście, podczas gdy węzły wewnętrzne mogą przechowywać tylko wartości kluczy.

Węzły-liście drzewa B+ są ze sobą połączone w formie pojedynczo połączonych list, aby zwiększyć efektywność wyszukiwania.

B+ Tree służą do przechowywania dużej ilości danych, których nie można zapisać w pamięci głównej. Ze względu na to, że wielkość pamięci głównej jest zawsze ograniczona, węzły wewnętrzne (klucze dostępu do rekordów) drzewa B+ przechowywane są w pamięci głównej, natomiast węzły-liście są przechowywane w pamięci dodatkowej.

Nieprzezroczystość przejścia CSS

Wewnętrzne węzły drzewa B+ nazywane są często węzłami indeksowymi. Drzewo B+ rzędu 3 pokazano na poniższym rysunku.


B+ Drzewo

Zalety drzewa B+

  1. Rekordy można pobierać przy równej liczbie dostępów do dysku.
  2. Wysokość drzewa pozostaje zrównoważona i mniejsza w porównaniu do drzewa B.
  3. Dostęp do danych zapisanych w drzewie B+ możemy uzyskać zarówno sekwencyjnie, jak i bezpośrednio.
  4. Klucze służą do indeksowania.
  5. Szybsze wyszukiwanie zapytań, ponieważ dane są przechowywane tylko w węzłach liści.
Zalety drzewa B+

Drzewo B VS Drzewo B+

SN Drzewo B B+ Drzewo
1 Klucze wyszukiwania nie mogą być zapisywane wielokrotnie. Mogą występować nadmiarowe klucze wyszukiwania.
2 Dane mogą być przechowywane w węzłach liściowych, a także węzłach wewnętrznych Dane mogą być przechowywane wyłącznie w węzłach liści.
3 Wyszukiwanie niektórych danych jest procesem wolniejszym, ponieważ dane można znaleźć zarówno w węzłach wewnętrznych, jak i w węzłach liściowych. Wyszukiwanie jest stosunkowo szybsze, ponieważ dane można znaleźć tylko w węzłach liści.
4 Usuwanie węzłów wewnętrznych jest więc skomplikowane i czasochłonne. Usuwanie nigdy nie będzie skomplikowanym procesem, ponieważ element będzie zawsze usuwany z węzłów liści.
5 Węzły liści nie mogą być ze sobą łączone. Węzły liści są ze sobą połączone, aby zwiększyć efektywność operacji wyszukiwania.

Wstawienie do drzewa B+

Krok 1: Wstaw nowy węzeł jako węzeł liścia

Krok 2: Jeśli liść nie ma wymaganego miejsca, podziel węzeł i skopiuj węzeł środkowy do następnego węzła indeksowego.

Krok 3: Jeśli węzeł indeksu nie ma wymaganego miejsca, podziel węzeł i skopiuj środkowy element na następną stronę indeksu.

Przykład :

Wstaw wartość 195 do drzewa B+ rzędu 5 pokazanego na poniższym rysunku.

znak do ciągu w Javie

B + Drzewo

Liczba 195 zostanie wstawiona w prawym poddrzewie liczby 120 po wartości 190. Wstaw ją w żądanym miejscu.


B + Drzewo

Węzeł zawiera większą liczbę elementów niż maksymalna, tj. 4, dlatego podziel go i umieść węzeł środkowy aż do elementu nadrzędnego.

pętla programu Java

B + Drzewo

Teraz węzeł indeksu zawiera 6 dzieci i 5 kluczy, co narusza właściwości drzewa B+, dlatego musimy go podzielić, jak pokazano poniżej.


B + Drzewo

Usunięcie w drzewie B+

Krok 1: Usuń klucz i dane z liści.

Krok 2: jeśli węzeł-liść zawiera mniej niż minimalna liczba elementów, połącz węzeł z jego rodzeństwem i usuń klucz znajdujący się pomiędzy nimi.

Krok 3: jeśli węzeł indeksu zawiera mniej niż minimalna liczba elementów, połącz węzeł z rodzeństwem i przesuń klucz w dół pomiędzy nimi.

Przykład

Usuń klucz 200 z drzewa B+ pokazanego na poniższym rysunku.


B + Drzewo

Liczba 200 jest obecna w prawym poddrzewie liczby 190, po liczbie 195. Usuń ją.


B + Drzewo

Połącz dwa węzły, używając liczb 195, 190, 154 i 129.


B + Drzewo

Teraz element 120 jest pojedynczym elementem obecnym w węźle, który narusza właściwości drzewa B+. Dlatego musimy go scalić, używając 60, 78, 108 i 120.

Teraz wysokość drzewa B+ zostanie zmniejszona o 1.

długi format ciągu Java

B + Drzewo