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

学习自

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*树入门》

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/qq_36523667/article/details/80466330
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞