Я предлагаю вам посмотреть первое изображение, а последнее . более простой для понимания алгоритм благодаря диаграммным примерам.
Не многократные ответы, все изображения показывают один и тот же алгоритм, но они могут использовать разные обозначения. Основная идея дерева B + проста.
Первая вставка ключей L + 1 до создания корневого узла:
1. | Начиная с того, сколько ключей вы хотите иметь в своем узле? Предположим, что L - это длина узла (то есть количество ключей в узле), например, L = 4. Вы начинаете вставлять ключи в узел, и каждый раз, когда вы вставляете новый ключ в узел, вы сортируете их (сортируете каждый раз, когда вставляете новый ключ, кроме первого раза).
2. | тогда у вас есть оператор if, проверяющий, заполнен ли узел, или 4 ключа в узле (используйте счетчик и увеличивайте его для каждой вставки, затем сравнивайте его с L).
3. | Если узел полностью разделен пополам, создайте временный узел, в который вы добавите средний ключ и создадите два новых узла, соединенных друг с другом, а также соединенных с первым.
После вставки ключей L + 1:
Вы строите свое дерево снизу вверх. Начиная с листовых узлов
После первого разбиения вам нужно будет искать в дереве правильное место для вставки нового ключа, так как вам нужно его закорочить, проверьте, заполнен ли узел, в который будет вставлен ваш ключ, если он заполнен до вставки и после, и если это расколоть это. Но на этот раз, когда вы разделяете узел, вы вставляете свой средний ключ в родительский узел и затем проверяете, заполнен ли родительский узел или нет.
Базовая функциональность, которую вам необходимо выполнить для вставки в дерево B +: a) search_method () , b) short_method () и затем c) вставка ()
см. также связанный список, как это работает