1.T树也叫键树,键树也叫数字查找树(Digital Search Trees),也叫字典树
下图就是一个T树
2.T树中有两种节点,一个是分支节点,一个是元素节点,如果指向的是分支节点,继续比较,如果指向的是元素节点,直接比较
T树只能插入不能删除,删除很麻烦
3.每个分支节点的下标从1开始都是在0下标的基础上加了一个A~Z的字母,比如说0下标是CHA,那么1下标就是CHAA,2下标就是CHAB…以此类推
0下标一定是元素节点而不是分支节点
4.T树不允许插入重复元素
5.T树为什么不能删除元素?
因为对于elementa和elementb两个元素来说,插入的时候需要不断的建立分支节点,如果要删除的话,需要把所有的分支节点全部删除,如果又要插入,又要不断的建立分支节点,这样会对内存进行不断的操作,效率就会降低
typedef enum {
BRCH = 0, ELEM = 1 }NodeType;//分支类型或者元素类型
const int LETLEN = 27;//从下标1开始,下标0有用
const int MaxKeySize = 25;//关键码的长度,最长英文单词长度是25
struct TrieNode;
typedef struct
{
char ch[MaxKeySize];//存放关键码,就是字符串
int currentSize;//关键码的长度
}KeyType;
typedef struct
{
KeyType key;//关键码
void* recptr;//指向数据
}ElemType;
typedef struct
{
TrieNode *link[LETLEN];
}BrchType;
struct TrieNode
{
NodeType utype;//类型
union
{
ElemType item;
BrchType brch;
};
};
class TrieTree
{
private:
TrieNode*</