B-樹的C++實現
阿新 • • 發佈:2018-12-25
程式碼下載:http://bluedog.download.csdn.net
B-樹網上的程式碼很象不是很多,關於它的原理我覺得沒有必要要談了,書上網上太多了。這裡我花了幾天的時間寫了一個,大家覺得有用的話就用吧,已經進行大量的測試,應該沒有什麼太大問題了,它由兩個檔案定義:BinaryMinusTree.h 和 BinaryMinusTree.inc,你只要包含BinaryMinusTree.h就好了。
#include "BinaryMinusTree.h"
這兩個檔案定義了幾個類,不過你唯一需要了解的只是CBinaryMinusTree 這個類,它的定義如下:
template<typename TK,typename
TV,size_t THD=10>
class BinaryMinusTreeKey
TK 是 Key值的型別,
TV是 Val 值的型別,
THD 是節點度的一半,意思是如果你一個節點的度是21即有21個KEY值,那麼THD就應為10
它有幾個方法:
bool Add(TK key,TV val); //增加一個Key和值
bool Remove(TK key);//刪除一個Key
void Print();//列印樹
void Clear();//刪除所有資料
還有幾個公共成員:
LPBMTN Root;//根節點
size_t KeyCount; //關鍵字數量
size_t Level; // 樹層數
size_t NodeCount; //樹節點數
沒有提供其它功能,有其它需要的朋友自已完善它吧。呵呵。
附記:其實B-樹的原理很簡單,書上提供的演算法描述也很清楚,不過真正要寫好它還是有點難度,很多要注意的地方,一不小心樹就掛了。