logo

B+ Drvo

B+ Tree je proširenje B Tree-a koje omogućuje učinkovite operacije umetanja, brisanja i pretraživanja.

U stablu B, ključevi i zapisi mogu se pohraniti u interne kao iu lisne čvorove. Dok, u B+ stablu, zapisi (podaci) mogu biti pohranjeni samo na lisnim čvorovima, dok unutarnji čvorovi mogu pohraniti samo ključne vrijednosti.

c++ int u niz

Lisni čvorovi B+ stabla međusobno su povezani u obliku jednostruko povezanih popisa kako bi upiti za pretraživanje bili učinkovitiji.

B+ Tree se koriste za pohranu velike količine podataka koji se ne mogu pohraniti u glavnu memoriju. Zbog činjenice da je veličina glavne memorije uvijek ograničena, interni čvorovi (ključevi za pristup zapisima) B+ stabla pohranjeni su u glavnoj memoriji, dok su lisni čvorovi pohranjeni u sekundarnoj memoriji.

Interni čvorovi B+ stabla često se nazivaju indeksni čvorovi. B+ stablo reda 3 prikazano je na sljedećoj slici.


B+ Drvo

Prednosti B+ stabla

  1. Zapisi se mogu dohvatiti u jednakom broju pristupa disku.
  2. Visina stabla ostaje uravnotežena i manja u usporedbi s B stablom.
  3. Podacima pohranjenima u B+ stablu možemo pristupiti sekvencijalno kao i izravno.
  4. Ključevi se koriste za indeksiranje.
  5. Brži upiti za pretraživanje jer se podaci pohranjuju samo na lisnim čvorovima.
B+ Prednosti stabla

B stablo VS B+ stablo

S N B Drvo B+ Drvo
1 Ključevi za pretraživanje ne mogu se više puta pohraniti. Mogu biti prisutni suvišni ključevi za pretraživanje.
2 Podaci se mogu pohraniti u lisne čvorove kao i unutarnje čvorove Podaci se mogu pohraniti samo na listovima čvorova.
3 Traženje nekih podataka sporiji je proces budući da se podaci mogu pronaći na unutarnjim čvorovima kao i na čvorovima lista. Pretraživanje je relativno brže jer se podaci mogu pronaći samo na lisnim čvorovima.
4 Brisanje unutarnjih čvorova je tako komplicirano i dugotrajno. Brisanje nikada neće biti složen proces jer će element uvijek biti izbrisan iz lisnih čvorova.
5 Listni čvorovi ne mogu se međusobno povezati. Lisni čvorovi međusobno su povezani kako bi operacije pretraživanja bile učinkovitije.

Umetanje u B+ stablo

Korak 1: Umetnite novi čvor kao listni čvor

Korak 2: Ako list nema potreban prostor, podijelite čvor i kopirajte srednji čvor u sljedeći indeksni čvor.

Korak 3: Ako čvor indeksa nema potreban prostor, podijelite čvor i kopirajte srednji element na sljedeću stranicu indeksa.

Primjer :

Umetnite vrijednost 195 u B+ stablo reda 5 prikazano na sljedećoj slici.


B + stablo

195 će biti umetnuto u desno podstablo od 120 nakon 190. Umetnite ga na željenu poziciju.


B + stablo

Čvor sadrži više od maksimalnog broja elemenata, tj. 4, stoga ga podijelite i postavite srednji čvor do roditelja.

algoritam dubina prvo pretraživanje

B + stablo

Sada, indeksni čvor sadrži 6 djece i 5 ključeva što krši svojstva B+ stabla, stoga ga moramo podijeliti, prikazano na sljedeći način.


B + stablo

Brisanje u B+ stablu

Korak 1: Izbrišite ključ i podatke s listova.

Korak 2: ako lisni čvor sadrži manje od minimalnog broja elemenata, spojite čvor sa svojim bratom i izbrišite ključ između njih.

Korak 3: ako indeksni čvor sadrži manje od minimalnog broja elemenata, spojite čvor sa srodnim i pomaknite dolje ključ između njih.

Primjer

Izbrišite ključ 200 iz B+ stabla prikazanog na sljedećoj slici.


B + stablo

200 je prisutan u desnom podstablu od 190, nakon 195. izbrišite ga.


B + stablo

Spojite dva čvora koristeći 195, 190, 154 i 129.


B + stablo

Sada je element 120 jedini element prisutan u čvoru koji krši svojstva B+ stabla. Stoga ga trebamo spojiti pomoću 60, 78, 108 i 120.

Sada će se visina B+ stabla smanjiti za 1.


B + stablo