Мой профессор читал лекцию о удалении B + деревьев, и я очень смутился. По его словам, для удаления любого ключа из B + Tree:Удаление ключа из дерева B +
1- First navigate to the leaf *L* where it belongs.
2- If the *L* is at least half full if you can simply delete it.
3- If it contains d-1 elements then you need to redistribute and merge.
Если вы видите ниже изображения, здесь я хочу удалить 19 и 20 с B + Tree.
После удаления 19 и 20 из B + Tree.
Вопрос:
Я смущен, почему здесь требуется перераспределение и слияние вообще? Если вы просто просто удаляете 19 и 20 из листовых узлов без какого-либо распространения, он должен работать правильно? Почему здесь происходит перераспределение? Может ли кто-нибудь объяснить?
Это потому, что левая стрелка 24 указывает на 20, но не 19. Вот почему перераспределение требуется для 20, но не 19.
Это не отвечает на мой вопрос. Не могли бы вы ответить на мою конкретную проблему? Как эта теория связана с этим. – python
Рассмотрите случай, когда вы удаляете, допустим, половину элементов без какого-либо перераспределения. Вы получите субоптимальное дерево, потому что у вас все еще будет три слоя, но вы можете поместить все элементы только в два слоя. – dimm
Как это важно в моем вопросе? Глубина дерева останется неизменной независимо от того, перестраиваетесь вы или нет. Текущая глубина - 3, и она не изменится. – python