数据结构之 B树 B+树 B*树
B树B+树B*树存在价值:
没有比较就没有伤害,不知道存在的价值,相对其他,如平衡二叉树
现在假设这么个场景咱们有面对这样一个实际问题:
就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的
(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),**这样导致二叉查找树结
构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下**,那么如何减少树的深度
(当然是不能减少查询的数据量),一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有
限的,自然该节点的子树数量也就是有限的)。
Btree原则
一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空 树或者满足一下性质: 1. 根节点至少有两个孩子 2. 每个非根节点有[ ,M]个孩子 3. 每个非根节点有[ -1,M-1]个关键字,并且以升序排列 4. key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间 5. 所有的叶子节点都在同一层
2.B+树
B*树
从图里面可以看出 b b+ b* 三种树 查询的区别,开闭口不一样,个人觉得b+叉树更合理点,开闭区间小,b+树和b* 区别没看明白,插入的时候,弄得不是太明白,需要怎么保证树的平衡,需要做哪些,后面整明白来补,整明白 在补