1.b树
前面我们已经学习了二叉查找树、2-3树以及它的实现红黑树。2-3树中,一个结点做多能有两个key,它的实现红黑树中使用对链接染色的方式去表达这两个key。接下来我们学习另外一种树型结构b树,这种数据结构中,一个结点允许多于两个key的存在。
b树是一种树状数据结构,它能够存储数据、对其进行排序并允许以o(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。
2.1 特性
2.2 存储数据
若参数m选择为5,那么每个结点最多包含4个键值对,我们以5阶b树为例,看看b树的数据存储。
2.3 b树的应用
在我们的程序中,不可避免的需要通过io操作文件,而我们的文件是存储在磁盘上的。计算机操作磁盘上的文件是通过文件系统进行操作的,在文件系统中就使用到了b树这种数据结构。
2.b+树
2.1 b+树和b树区别
b+树是对b树的一种变形树,它与b树的差异在于:
- 非叶结点仅具有索引作用,也就是说,非叶子结点只存储key,不存储value;
- 树的所有叶结点构成一个有序链表,可以按照key排序的次序遍历全部数据。
2.2 b+树存储数据
若参数m选择为5,那么每个结点最多包含4个键值对,我们以5阶b+树为例,看看b+树的数据存储。
2.3 b+树和b树的对比
b+ 树的优点在于:
1.由于b+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。 2.b+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而b树则需要进行每一层的递归遍历。
b树的优点在于:
由于b树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到value,但b+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。
2.4b+树的应用
应用在数据库中。
在数据库的操作中,查询操作可以说是最频繁的一种操作,因此在设计数据库时,必须要考虑到查询的效率问题,在很多数据库中,都是用到了b+树来提高查询的效率;在操作数据库时,我们为了提高查询效率,可以基于某张表的某个字段建立索引,就可以提高查询效率,那其实这个索引就是b+树这种数据结构实现的。
例:
参考:黑马程序员java数据结构与java算法
发表评论