动态前缀树的实现
动态前缀树实现的关键在于利用指针的动态分配,但这也带来了一个问题,内存的释放问题。所以我们采用将每一个申请的内存空间通过vector进行存储,最后方便释放。
Trie_dyn.h
//
// Created by Alone on 2021/8/3.
//
#ifndef MY_TINY_STL_TRIE_DYN_H
#define MY_TINY_STL_TRIE_DYN_H
#include <cstring>
#include <string>
#include <vector>
using namespace std;
struct Trie{
bool f;
Trie* children[26];
Trie():f(false){
memset(children,0,sizeof(children));
}
};
class Trie_dyn {
private:
vector<Trie*>pool;
Trie* searchPrefix(const string s);
public:
Trie_dyn():pool(1){
pool[0] = new Trie;
}
~Trie_dyn();
void insert(string word);
bool search(string word);
bool startWith