1. 程式人生 > >B-樹的C++實現

B-樹的C++實現

程式碼下載: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即有21KEY值,那麼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-樹的原理很簡單,書上提供的演算法描述也很清楚,不過真正要寫好它還是有點難度,很多要注意的地方,一不小心樹就掛了。