B树中根节点的子树数

时间:2014-10-16 13:29:14

标签: algorithm data-structures language-agnostic tree

我在各种书籍中读过的B树的定义都包含以下内容

  • 除根节点外的每个节点必须至少半满
  • 如果根节点是索引节点,则它必须至少有两个子节点。

我认为第二种特殊情况是允许B树只有一个密钥而且仍然有效。但是,如果B树有很多节点,是否仍允许根节点只有两个子树?这不会破坏B树​​的保证,如易拆分和连接操作吗?

1 个答案:

答案 0 :(得分:0)

  

但是,如果B树有很多节点,是否仍然允许根节点只有两个子树?

是的,root是特殊的,因为每个其他内部节点都有可以合并的兄弟节点。

假设我们删除了一个键,结果是某个内部节点的子节点太少了。我们在通常的B树算法中有两个选项:让这个节点从其兄弟姐妹中获取一些孩子,或者直接合并兄弟姐妹(可能将缺陷传播到根目录)。根本没有选项,所以我们只是免除最低儿童要求。这会将给定数量的键的最大高度增加至多一个,因此操作的渐近运行时间不受影响。