上回写到了m-路查找树,这回又要引申到一个重要的结构,B-树;
很多人叫他B减树,实际上只是个破折号,but whatever,B树有以下一些性质
一棵 m 阶的 B- 树:
(1)树的根或者是一片叶子(一个节点的树),或者其儿子数在
2 和 m 之间;
(2)除根外,所有的非叶子结点的孩子数在 m/2 和 m 之间;
(3)所有的叶子结点都在相同的深度。
B-树的平均深度为log(m/2)N。执行查找的平均时间为O(logm);
B-树应用在数据库系统中的索引,它加快了访问数据的速度;
B树中的叶子结点其实都是失败节点,即查找失败的结点,所以叶结点也称为失败节点。
B-树中的关键字个数
所有失败结点都在 l+1 层的 m 阶B-树至多包含 m^l-1 个关键字。
每个结点又至少包含m/2个儿子
B-树的第 1 层至少包含 2 个儿子,
B-树的第 2 层至少包含 2 个结点,
B-树的第 3 层至少包含 2*(m/2) 个结点,
B-树的第 4 层至少包含 2*(m/2)^2 个结点,
…
B-树的第 l (>1) 层至少包含 2*(m/2)^ l-2 个结点。
下面介绍一下B-树的查找机制:首先,B树中一个结点可以存放许多元素,在实际应用中,结点的规模一般是一个磁盘页,而结点中所包含的关键字及其孩子的数目取决于磁盘页的大小。所以每次找到对应的节点位