说明:
纯手写的代码,仅用于个人练习,不保证完全正确性,没有用对数器进行验证,拿慎选。
编译器:
Microsoft VIsual Studio 2022
代码如下:
#include <iostream>
#include <string>
class Node {//节点类
public:
int pass;
int end;
Node** next;
public:
Node() {//构造函数
pass = 0;
end = 0;
next = new Node * [26];
for (int i = 0; i < 26; ++i) {//在这里必须手动设置next[i]为nullptr,即0地址,否则随机地址无法用nullptr识别
next[i] = nullptr;
}
}
};
class TrieTree : private Node {//字典树类
private:
Node* root;
public:
TrieTree() {//构造函数
root = new Node();
}
void insertWord(const std::string& word) {//插入单词
if (word.empty()) {
std::cout << "NULL" << std::endl;
return;
}
Node* node = root;
node->pass++;
int index = 0;
for (int i = 0; i < word.size(); ++i) {
index