参考左神前缀树写法。
每个结点包括
- 通过的路径数量(每个字符出现的数量)
- 停止点(至此前的字符串出现的数量)
- 接下来的字符
主要函数包括
- 插入字符串 word_insert
- 返回相同的字符串数量 word_search
- 删除字符串 word_delete
- 前缀数量计算 prefixNumber
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct TrieNode {
int path;
int end;
TrieNode* nexts[26];
};
class Trie
{
//private:
// TrieNode *root;
public:
TrieNode* root;
Trie() {
root = new TrieNode();
}
// 插入一个新的字符串,更新前缀树
void word_insert(string word)
{
if (word.empty())
return;
TrieNode* node = root;
int index = 0;
for (int i =