Titan专栏

用文字来整理生命

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  44 随笔 :: 49 文章 :: 19 评论 :: 0 Trackbacks

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-树。

posted on 2006-02-12 16:29 Titan 阅读(3012) 评论(3)  编辑  收藏

评论

# re: B-树 2006-07-05 10:05 高昂的心
没有算法实现  回复  更多评论
  

# re: B-树 2006-09-10 10:15 aaaaaaaaaaa
看看这个,有源代码和演示程序的
http://www.rosipay.com/1/41219.html  回复  更多评论
  

# re: B-树 2008-05-15 19:37 lemonroot
你这个上面描述的是B+-树。B-树的数据并不都是存储在叶结点中的。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: