b tree b tree data structure c
Овај водич за Ц ++ објашњава структуре података Б Трее & Б + Трее. Користе се за чување података на дисковима када се целокупни подаци не могу сачувати у главној меморији:
Б-стабло је самобалансирано стабло, као и специјализовано стабло м-пута које се користи за приступ диску.
Када је количина података који треба похранити врло велика, не можемо сачувати целокупне податке у главној меморији. Стога податке складиштимо на диску. Приступ подацима са диска одузима више времена у поређењу са приступом главној меморији.
Када је број кључева података ускладиштених на дисковима веома велик, подацима се обично приступа у облику блокова. Време приступа овим блоковима је директно пропорционално висини стабла.
=> Кликните овде за апсолутну Ц ++ серију обуке.
Шта ћете научити:
Б-дрво у Ц ++
Б-дрво је равно дрво, тј. Висина Б дрвета је сведена на минимум. Уместо тога, у сваки чвор Б-дрвета ставља се толико кључева. Држећи висину Б-дрвета на минимуму, приступ је бржи у поређењу са другим уравнотеженим стаблима попут АВЛ стабала.
Типично Б-дрво приказано је испод:
имплементација бинарног стабла ц ++
Генерално, величина чвора у Б-стаблу задржава се једнака величини блока.
У наставку су наведена нека својства Б-Трее-а.
- Сви листови Б-дрвета су на истом нивоу.
- Б-дрво реда м може имати највише м-1 кључева и м деце.
- Сваки чвор у Б-дрвету има највише м деце.
- Коријенски чвор мора имати најмање два чвора.
- Сваки чвор, осим коренског и лиснатог, садржи м / 2 деце.
Затим ћемо разговарати о неким основним операцијама Б-дрвета.
Основне операције Б-дрвета
Доље су дате неке од основних операција Б-Трее-а.
# 1) Претраживање
Претраживање у Б стаблу слично је претраживању у БСТ. Ако желимо да потражимо ставку 3 у горњем стаблу, поступићемо на следећи начин:
- Упоредите 3 са основним елементима. Ево, 3<6 and 3 <15. So we proceed to the left subtree.
- Упоредите 3 са 4 у левом подстаблу. Као 3<4, we proceed to the left subtree of node 4.
- Следећи чвор има два кључа, 2 и 3. 3> 2 док је 3 = 3. Дакле, пронашли смо кључ на овом чвору. Вратите се на пронађену локацију.
Претраживање у стаблу Б зависи од висине стабла. Обично је потребно О (лог н) време за тражење дате ставке.
# 2) Уметање
Уметање нове ставке у стабло Б врши се на нивоу чворова листа.
Следи редослед корака (алгоритам) за уметање нове ставке у Б стабло.
- Пређите дрво Б да бисте пронашли место на чворовима листова за уметање предмета.
- Ако чвор листа садржи кључеве
- Иначе ако су кључеви чвора листа = м-1, онда:
- Уметните нову ставку у све већи број ставки.
- Узмите медијану чворова и поделите чвор на два чвора.
- Потисните медијану до матичног чвора.
- Ако је кључ надређеног чвора = м-1, поновите горње кораке и за надређени чвор. То се ради све док не пронађемо одговарајући чвор листа.
- На крају убаците елемент.
- Иначе ако су кључеви чвора листа = м-1, онда:
Демонстрирали смо уметање у Б стабло на следећи начин.
Уметнимо ставку 70 у стабло приказано доле.
бесплатна апликација за преузимање музике за мп3 за андроид
Дати стабло има минимални степен ‘м’ = 3. Дакле, сваки чвор може да прими 2 * м -1 = 5 тастера у њему.
Сада убацујемо ставку 70. Како можемо имати 5 кључева у чвору, упоређујемо елемент 70 са основним елементом 30. Пошто је 70> 30, убацићемо ставку 70 у десно подстабло.
У десном подстаблу имамо чвор са кључевима 40, 50, 60. Како сваки чвор може да има 5 кључева, у њега ћемо уметнути ставку 70.
Након уметања, Б-дрво изгледа на следећи начин.
# 3) Брисање
Баш као и уметање, брисање кључа се такође врши на нивоу чворова листа. Али за разлику од уметања, брисање је сложеније. Кључ који треба избрисати може бити или чвор листа или интерни чвор.
Да бисмо избрисали кључ, следимо следећи редослед корака (алгоритам).
1. Пронађите чвор листа.
два. У случају да је број кључева у чвору> м / 2, избришите дати кључ из чвора.
3. У случају да лисни чвор нема м / 2 кључа, тада треба да довршимо кључеве узимајући кључеве са десног или левог подстабла да бисмо одржавали дрво Б.
Пратимо ове кораке:
- Ако лево подстабло садржи м / 2 елемента, тада његов највећи елемент потискујемо у надређени чвор, а затим премештамо интервенирајући елемент на место где је кључ избрисан.
- Ако десно подстабло садржи м / 2 елемента, тада његов најмањи елемент потискујемо у надређени чвор, а затим премештамо интервенирајући елемент на место где је кључ избрисан.
Четири. Ако ниједан чвор нема м / 2 чворова, горњи кораци се не могу извршити, па креирамо нови чвор удруживањем два чвора чвора и интервентног елемента родитељског чвора.
5. Ако је родитељ без м / 2 чворова, понављамо горње кораке за дотични родитељски чвор. Ови кораци се понављају док не добијемо уравнотежено стабло Б.
Доље је дата илустрација брисања чвора са Б стабла.
Размотрите још једном следеће дрво Б.
како отворити извршну јар датотеку
Претпоставимо да желимо да обришемо кључ 60 са стабла Б. Ако проверимо стабло Б, можемо утврдити да је кључ који треба избрисати присутан у чвору листа. Из овог чворишта листа бришемо кључ 60.
Сада ће дрво изгледати као што је приказано доле:
Можемо приметити да након брисања кључа 60, чвор Б листа стабла задовољава тражена својства и не морамо више вршити никакве модификације на Б стаблу.
Међутим, да смо морали да обришемо кључ 20, тада би само кључ 10 остао у левом чвору листа. У овом случају, морали бисмо да пребацимо корен 30 на чвор листа и да преместимо кључ 40 у корен.
Стога, приликом брисања кључа са Б стабла, треба бити пажљив и не би требало кршити својства Б стабла.
Преокрет у дрвету Б.
Преокрет у Б стаблу је такође сличан преласку у БСТ. Почињемо рекурзивно с леве стране, затим долазимо до корена и настављамо према левом подстаблу.
Примене Б дрвећа
- Б стабла се користе за индексирање података, посебно у великим базама података, јер је приступ подацима ускладиштеним у великим базама података на дисковима дуготрајан.
- Претраживање података у већим неразврстаним скуповима података одузима пуно времена, али то се може значајно побољшати индексирањем помоћу Б стабла.
Б + стабло у Ц ++
Б + стабло је продужетак Б стабла. Разлика у стаблу Б + и стаблу Б је у томе што се у стаблу Б кључеви и записи могу чувати као унутрашњи као и чворови листова, док се у стаблима Б + записи чувају као чворови листова, а кључеви само у унутрашњим чворовима.
Записи су међусобно повезани на начин повезане листе. Овај аранжман чини претраге стабала Б + бржим и ефикаснијим. Интерни чворови стабла Б + називају се чворови индекса.
Стабла Б + имају два реда, тј. Један за унутрашње чворове и други за лисне или спољне чворове.
Пример Б + стабла је приказан у наставку.
Како је Б + стабло продужетак Б-стабла, основне операције о којима смо разговарали у теми Б-дрво и даље важе.
Током уметања и брисања, основна својства Б + дрвећа требало би да останемо нетакнута. Међутим, операција брисања у стаблу Б + је релативно лакша јер се подаци чувају само у чворовима листа и они ће се увек брисати из чворова листа.
Предности Б + дрвећа
- Записе можемо преузети у једнаком броју приступа диску.
- У поређењу са стаблом Б, висина стабла Б + је мања и остаје уравнотежена.
- За индексирање користимо кључеве.
- Подацима у стаблу Б + може се приступити секвенцијално или директно како су чворови листа поређани у повезану листу.
- Претраживање је брже јер се подаци чувају само у чворовима листова и као повезана листа.
Разлика између стабла Б и стабла Б +
Б-дрво | Б + дрво |
---|---|
Подаци се чувају у чворовима листова, као и у унутрашњим чворовима. | Подаци се чувају само у чворовима листа. |
Претраживање је нешто спорије јер се подаци чувају у унутрашњим и лисним чворовима. | Претраживање је брже јер се подаци чувају само у чворовима листа. |
Нема сувишних тастера за претрагу. | Можда су присутни сувишни тастери за претрагу. |
Операција брисања је сложена. | Операција брисања је једноставна јер се подаци могу директно избрисати из чворова листа. |
Чворови листова не могу се међусобно повезати. | Чворови листова повезани су заједно да би створили повезану листу. |
Закључак
У овом упутству детаљно смо разговарали о Б-стаблу и Б + стаблу. Ове две структуре података користе се када постоји велика количина података и када се целокупни подаци не могу сачувати у главној меморији. Стога за чување података на дисковима користимо Б-дрво и Б + стабло.
Претраживање Б-стабла је нешто спорије јер се подаци чувају у унутрашњим чворовима као и у чворовима листова у њима. Б + стабло је продужетак Б-стабла и овде се подаци чувају само у чворовима листова. Због овог фактора, претраживање у стаблу Б + је брже и ефикасније.
=> Посетите овде за комплетну листу водича за Ц ++.
Препоручено читање
- Структура података АВЛ стабла и гомиле у Ц ++
- Повезана структура података листе на Ц ++ са илустрацијом
- Структура података у реду у Ц ++ са илустрацијом
- Структура података стека у Ц ++ са илустрацијом
- Структура података кружно повезане листе на Ц ++ са илустрацијом
- Увод у структуре података на језику Ц ++
- Структура података приоритетног реда у Ц ++ са илустрацијом
- Структура података двоструко повезане листе у Ц ++ са илустрацијом