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