Trie树
又名字典树,前缀树。用于存储大量字符串,并进行快速检索。
数据结构
这里采用类似与链表的实现方法。
```cpp
typedef struct TrieNode
{
char c;
bool flag = false;
struct TrieNode* next[26]; //TrieNode*数组,每个结点的下一层都可能是不同字母的结点;
}TNode;
TNode head = new TNode;
//建立字典树需执行插入操作,每次插入一个字符串
void insert(string word)
{
for(int i=0;i<word.size();i++)
{
int index = word[i]-'a';
if(head.next[index]==nullptr)
{
head.next[index] = new TNode;
head.next[index].c = word[i];
}
if(i == word.size())
{
head.flag = true;
}
head = head.next[index];
}
}
bool search(string key)
{
bool exist=false;
for(int i =0;i<key.size();i++)
{
index = key[i]-'a';
if(head.next[index]==null)
{
return exist;
}
else
{
if(i==key.size())
{
if(head.flag == true)
{
exist = true;
}
}
head = head.next[index];
}
}
return exist;
}