Titan專欄

          用文字來整理生命

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評論 :: 0 Trackbacks

          B-樹,B-樹是一種非二叉的查找樹。它除了要滿足查找樹的特性,還要滿足以下結(jié)構(gòu)特性:

              一棵M階的B-樹,(1) 樹的根或者是一片葉子(一個節(jié)點(diǎn)的樹),或者其兒子數(shù)在2和M之間。(2) 除根外,所有的非葉子節(jié)點(diǎn)的孩子數(shù)在M/2和M之間。(3),所有的葉子節(jié)點(diǎn)都在相同的深度。

          要注意的是,B-樹中,所有的數(shù)據(jù)都存放在葉子節(jié)點(diǎn)。而在葉子節(jié)點(diǎn)上存放的數(shù)據(jù)量是有限的。

          B-樹的插入與刪除,唯一要考慮的問題是,讓插入或刪除以后的樹,依然滿足B-樹的特性。在某些情況下,這也是一個比較復(fù)雜的過程。說不清楚,看書中的例子。書中的方法其實(shí)也都是定式。因為計算機(jī)本身不會思考。所以當(dāng)我們思考計算機(jī)要做的工作時,我們要學(xué)會像計算機(jī)一樣機(jī)械的考慮問題。說白了就是if。。。then。。。else。

          B-樹的平均深度為logm/2N。執(zhí)行查找的平均時間為O(logM)。

          B-樹應(yīng)用在數(shù)據(jù)庫系統(tǒng)中。具體指的是應(yīng)該是索引。它加快了訪問數(shù)據(jù)的速度。

          書中提到這一種流行的定義B-樹的方法。還有一種定義的方法是允許把數(shù)據(jù)存放在內(nèi)部節(jié)點(diǎn)中。而沒有提到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 閱讀(3044) 評論(3)  編輯  收藏

          評論

          # re: B-樹 2006-07-05 10:05 高昂的心
          沒有算法實(shí)現(xiàn)  回復(fù)  更多評論
            

          # re: B-樹 2006-09-10 10:15 aaaaaaaaaaa
          看看這個,有源代碼和演示程序的
          http://www.rosipay.com/1/41219.html  回復(fù)  更多評論
            

          # re: B-樹 2008-05-15 19:37 lemonroot
          你這個上面描述的是B+-樹。B-樹的數(shù)據(jù)并不都是存儲在葉結(jié)點(diǎn)中的。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东宁县| 丽水市| 建阳市| 丹江口市| 成武县| 巴东县| 虹口区| 西林县| 临猗县| 平邑县| 张家口市| 峨眉山市| 武威市| 大名县| 娱乐| 临江市| 河东区| 白银市| 阿巴嘎旗| 河津市| 玛纳斯县| 蓬安县| 邹城市| 正镶白旗| 碌曲县| 章丘市| 宁晋县| 上思县| 余姚市| 德令哈市| 龙州县| 斗六市| 淮安市| 德阳市| 会宁县| 商南县| 宣化县| 舒兰市| 昌邑市| 太康县| 兴安县|