B树
B树,又叫做B-Tree。他是一种平衡的多路查找树。主要面向动态查找,通常用在文件系统中。
1、B树的定义:
一颗m阶的B树或者为空树,满足以下的几个条件:
(1)所有的叶子节点都在同一层上面,并且叶子节点上面不存储信息。叶子节点的双亲节点为终端节点。
(2)树中的每个节点至多有m颗子树。
(3)若根节点不是终端节点,则根节点至少有两颗子树。
(4)除了根节点以外的所有非终端节点至少有m/2颗子树。
(5)所有的非终端节点都包含三个信息:关键码个数、关键码和指向子树根节点的指针。其中关键码是按照从小到大进行排列的。
B树的叶子节点通常可以看做是查找失败的节点,称为外节点。实际上这些外节点是不存在的,指向这些节点的指针为空,所以B树的叶子节点可以不用画出来。由于叶子节点都在出现在同一层上面,所以B树是高度平衡的。如下图,是一颗4阶的B树。
2、B树的查找(数据库中索引查找的体现)
B树的查找类似于二叉排序树的查找,不同的是B树的每个节点是含有多关键码的有序列表,在到达某个节点时,先在有序表中查找,若找到,则查找成功;否则,按照指针到相应的子树中查找,到达叶子节点时,查找失败。
在B树上的查找过程是一个顺时针查找节点和在节点中查找关