B树的定义:
1.若根结点不是终端结点,则至少有2棵子树
2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m
3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
4.所有的叶子结点都位于同一层。
5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。
B树的优点:
优化二叉树的高度,以便减小磁盘IO的次数,提高访问效率。构造一个m阶的B树,尽量多地在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。
B树查找数据
(1)从根节点开始比较,如果查找的数据比根节点小,就去左子树继续遍历查找,否则去右子树遍历查找
(2)与子树的多个关键字进行比较,找到它所处的范围,然后去范围对应的子树中继续查找
(3)以此循环,直到找到或者到叶子节点还没找到为止
B树的增删过程
B树的作用:文件系统以及部分数据库索引,如MongoDB