Допустимо ли это дерево B+?
В дереве B+ может ли существовать не-листовой узел, у которого значение ключа удалено? Это означает, что дерево B+ имеет значение в своем промежуточном не листовом узле, но не в любом из его листовых узлов.
Рассмотрим следующую структуру. Я столкнулся с этим, изучая деревья B+. В этой структуре 13 не является конечным узлом. Но это не листовой узел. (На самом деле он был удален в предыдущих инструкциях. Ссылка на картинку . По этой ссылке переходим в нижнюю часть Страница)

Если да, то как происходит удаление данных?
Это ошибка или я что-то упускаю?
1 ответ:
Изображение, которое вы разместили, действительно. Единственное, что возвращает это дерево, - это то, что вы найдете в последней строке. Поскольку
13был удален из дерева, он был удален из последней строки. Тот факт, что13существует в не-листовом узле, не имеет никакого значения для ваших результатов, это просто должно быть сопоставимое значение при переходе вниз по дереву. В этом случае дерево не будет вести себя иначе, если13будет изменено на16(на основе вышеупомянутого соглашения).Дуглас Фишер сделал исчерпывающий видеоряд о деревьях B+, который может быть легче изучить, чем читать статьи. Часть 1 можно найти здесь.
Edit : мой ответ в комментариях был слишком длинным, поэтому я помещу его здесь. Плюс это полезная информация.
Если вы ищете
12, и достигнете13, вы будете сравнивать это12 < 13или13 <= 12, левый истинен, поэтому вы перейдете вниз к левому листу. Это произошло бы независимо от того, был ли1316, потому что это тоже верно12 < 16.Если вы ищете
16и достигаете13, вы будете сравнивать16 < 13или13 <= 16, правильное выражение верно, поэтому вы перейдете вниз к правому листу. Тогда вы найдете значение16там.Если вы ищете
13(который не существует), вы спросите, является ли13 < 13или13 <= 13, правильное выражение истинно, поэтому вы перейдете к правому листу и обнаружите, что там нет13, и вы выбьете это укажите, что13не имеет значения.