-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbplus_tree.h
43 lines (37 loc) · 1.25 KB
/
bplus_tree.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <cstring>
using namespace std;
class Node{
public:
int order;//树的阶
int keynum;//当前关键字数量
char** keys;//存储key(叶子节点和索引节点都存在key)
bool isLeaf;//当前节点是否为叶子节点
Node* parent;//存储当前节点的父亲节点
};
class IndexNode : public Node{
//索引节点
public:
Node** children;//存储孩子节点的指针(指针数组)
IndexNode(int order);
};
class LeafNode : public Node{
//叶子节点
public:
Node* next;//存储叶子节点的下一个节点的指针
char** values;//存储字符串数组
LeafNode(int order);
};
class BPlusTree{
private:
int order;//树的阶
Node* root;//树的根
public:
BPlusTree(int order);
void insert(char* s, char* key);//插入字符串s到叶子节点,key值可根据hash函数求出
Node* search(char* s, char* key);//找到字符串s在树中对应的叶子节点方便插入
bool find(char* s, char* key);//返回树中是否存在字符串s
void printKeys();//输出所有的key
void printValues();//输出所有values(字符串)
~BPlusTree();
};