B-树,B-树是一种非二叉的查找树。它除了要满足查找树的特性,还要满足以下结构特性:
一棵M阶的B-树,(1) 树的根或者是一片叶子(一个节点的树),或者其儿子数在2和M之间。(2) 除根外,所有的非叶子节点的孩子数在M/2和M之间。(3),所有的叶子节点都在相同的深度。
要注意的是,B-树中,所有的数据都存放在叶子节点。而在叶子节点上存放的数据量是有限的。
B-树的插入与删除,唯一要考虑的问题是,让插入或删除以后的树,依然满足B-树的特性。在某些情况下,这也是一个比较复杂的过程。说不清楚,看书中的例子。书中的方法其实也都是定式。因为计算机本身不会思考。所以当我们思考计算机要做的工作时,我们要学会像计算机一样机械的考虑问题。说白了就是if。。。then。。。else。
B-树的平均深度为logm/2N。执行查找的平均时间为O(logM)。
B-树应用在数据库系统中。具体指的是应该是索引。它加快了访问数据的速度。
书中提到这一种流行的定义B-树的方法。还有一种定义的方法是允许把数据存放在内部节点中。而没有提到B+树。而我在google上找出的B+树的定义和以上对B-树的定义很像:“A B-Tree in which keys are stored in the leaves. ”。这让我很困惑。究竟那个是B+树哪个是B-树。