学习自

https://zhuanlan.zhihu.com/p/27700617

 

平衡二叉树

平衡二叉树、B树、B+树、B*树入门

 

B树

(图中示例为m=3阶)

平衡二叉树、B树、B+树、B*树入门

每个节点(除了根节点)有:2<=k<=m个子节点
关键字?

叶子节点都在同一层

如果一个非叶节点有n个子节点,那么这个非叶节点存放的关键字数有n-1个。

 

3、8、31、11、23、29、50、28怎么构建出一个5阶树呢?

关键字数:3<=k<=4

一旦关键字数小于3就要进行合并,关键字数大于4就要进行拆分

 

平衡二叉树、B树、B+树、B*树入门

平衡二叉树、B树、B+树、B*树入门

平衡二叉树、B树、B+树、B*树入门

最后的这个合并,其实是先进行右下角的5个的拆分,拆分成

平衡二叉树、B树、B+树、B*树入门

这种形式,但是不满足非根节点的关键字数目限制,然后就向上合并了。

 

删除

关键字数小于二时先从子节点取,子节点没有符合条件时就向向父节点取,取中间值往父节点放

 平衡二叉树、B树、B+树、B*树入门

B+树

 

比之B树的优点:

1.更稳定

2.查找效率更高,充分地利用了节点的空间

 平衡二叉树、B树、B+树、B*树入门

叶子节点存放所有的关键字及关键字记录的指针(也就是我们存放的数据)。

所有父节点,都只是存放孩子的索引,并非关键字指针。所以父节点的作用就是让你正确地找到孩子。

 

B*树

他是B+树的变种,但是

1.B*树的关键字个数最小为 2/3m向上取整

2. B*树节点满时会检查兄弟节点是否满(因为每个节点都有指向兄弟的指针),如果兄弟节点未满则向兄弟节点转移关键字,如果兄弟节点已满,则从当前节点和兄弟节点各拿出1/3的数据创建一个新的节点出来。向兄弟节点转移关键字的特性使得B*树额分解次数变得更少。

平衡二叉树、B树、B+树、B*树入门

相关文章:

  • 2021-05-26
  • 2021-08-12
  • 2021-07-15
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2021-04-22
猜你喜欢
  • 2022-12-23
  • 2021-10-30
  • 2021-04-20
  • 2021-08-05
  • 2022-12-23
  • 2021-04-18
相关资源
相似解决方案