Как удалить элемент из b-дерева? - PullRequest
1 голос
/ 03 марта 2011

Я пытаюсь узнать о b-дереве, и каждый источник, который я могу найти, кажется, пропускает обсуждение о том, как удалить элемент из дерева при сохранении свойств b-дерева.

Может кто-нибудь объяснитьалгоритм или указать мне ресурс, который объясняет, как это делается?

Ответы [ 4 ]

3 голосов
/ 03 марта 2011

На странице Википедии есть объяснение этому. B-дерево - Удаление

1 голос
/ 03 марта 2011

Если у вас его еще нет, я настоятельно рекомендую Кармен и др. Введение в алгоритмы, 3-е издание .

Это не описано, поскольку операции естественным образом происходят из B-дерева.properties.

Поскольку у вас есть нижняя граница для количества элементов в узле, если удаление ваших элементов нарушает этот инвариант, вам необходимо восстановить его, что обычно включает слияние с соседом (или кражу некоторыхего элементов).

Если вы объединяетесь с соседом, то вам нужно удалить элемент в родительском узле, который запускает тот же алгоритм.И вы применяете рекурсивно, пока не достигнете вершины.

У B-Tree нет перебалансировки (по крайней мере, не тех, которые я видел), поэтому гораздо проще, чем поддерживать красно-черное дерево или дерево AVL, котороеВероятно, поэтому люди не чувствовали себя обязанными писать об удалении.

0 голосов
/ 30 декабря 2013

Пример удаления из CLRS (2-е издание) доступен здесь: http://ysangkok.github.io/js-clrs-btree/btree.html

Нажмите «Начальная книга», а затем нажмите кнопки удаления по порядку.Это будет охватывать все случаи.Попробуйте предсказать новое состояние дерева, прежде чем нажимать каждую кнопку, и попытайтесь распознать, как уникальны все случаи.

0 голосов
/ 03 марта 2011

О каких би-деревьях ты говоришь? Со связанными листьями или нет? Также есть разные способы удаления предмета (сверху вниз, снизу вверх и т. Д.). Эта статья может помочь: B-деревья, теневое копирование и клоны (даже при том, что есть много связанных с файловой системой вещей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...