定义及特征:
B树是一种多路平衡查找树,它的每一个节点最多包含m个孩子,m被称为B树的阶。(m的大小取决于磁盘页的大小)
一个m阶的B树具有如下几个特征:
1)根节点至少有两个子女;
2)每个中间节点都包含k-1个元素和k个孩子,其中m/2<=k<=m
3)每一个叶子节点都包含k-1个元素,其中m/2<=k<=m
4)所有的叶子结点都位于同一层
5)每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划
一棵典型的3阶B树
应用场景:
数据库索引及文件系统,不能同时将所有的索引或者文件信息等都加载到内存中(占用空间太大),需要根据二叉树的节点依次加载节点,这样的话,就必须要考虑磁盘IO和磁盘页大小的问题。
磁盘IO的次数取决于树的高度。
二叉查找树的查找操作平均时间复杂度为O(logN),性能已经足够高了。但是二叉查找树在此场景下,树的高度较高。
B树相比于二叉查找树变得矮胖了,而相比于磁盘IO的速度,在内存中的比较耗时几乎可以忽略。因此B树在此场景下的查找效率比二叉查找树要高很多。
著名的非关系型数据库MongoDB就使用了B-树这种数据结构。