B树的C++实现代码
(2011-10-30 18:58:01)
标签:
b树c代码 |
分类: 源代码 |
#pragma once
//////////////////////////////////////////////////////////////////////
// B树(B-Tree)
// By Rendy
// C++版(vs2008编译通过)
// 按照《算法导论》的算法实现,节点没有父指针,不需要回溯
///////////////////////////////////////////////////////////////////////
template <typename T>
class CBTree
{
//最小度数M=2
static const
int M = 2;
static const
int KEY_MAX = 2*M-1;
static const
int KEY_MIN = M-1;
static const
int CHILD_MAX = 2*M;
static const
int CHILD_MIN = M;
typedef
struct Node{
int
n;
//关键码的个数
T
k[KEY_MAX];
//关键码
Node*
c[CHILD_MAX];
//子节点指针
bool
leaf;
//是否是叶子节点
} NODE,
*PNODE;
public:
CBTree(void)
{
m_pRoot = NULL;
}
~CBTree(void)
{
DestoryTree(m_pRoot);
m_pRoot = NULL;
}
public:
bool
Insert(T key)
{
//已经插入了,直接返回成功
if (Search(m_pRoot, key))
return true;
if (NULL == m_pRoot)
m_pRoot = CreateEmptyTree();
if (m_pRoot->n == KEY_MAX)
{
PNODE pNew = NewNode();
pNew->n = 0;
pNew->leaf = false;
pNew->c[0] = m_pRoot;
//////////////////////////////////////////////////////////////////////
// B树(B-Tree)
// By Rendy
// C++版(vs2008编译通过)
// 按照《算法导论》的算法实现,节点没有父指针,不需要回溯
///////////////////////////////////////////////////////////////////////
template <typename T>
class CBTree
{
public:
public: