发布一个B-树的代码
代码下载:http://bluedog.download.youkuaiyun.com
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-树的原理很简单,书上提供的算法描述也很清楚,不过真正要写好它还是有点难度,很多要注意的地方,一不小心树就挂了。