#include<bits/stdc++.h>
using namespace std;
typedef struct TrieNode{
bool flag;
TrieNode *next[26];
TrieNode(){
flag = false;
memset(next, 0, sizeof(next));
}
}TrieNode, *Trie;
TrieNode *InitTrieNode(){
TrieNode *p = new TrieNode;
return p;
}
void InsertNode(Trie root, char *word){
Trie p = root;
char *ch = word;
int id;
while(*ch){
id = *ch - 'a';
if (p->next[id] == NULL)
p->next[id] = InitTrieNode();
p = p->next[id];
++ch;
}
p->flag = true;
}
bool TrieSearch(Trie root, char *word){
Trie p = root;
char *ch = word;
int id;
bool ans = false;
while(*ch){
id = *ch - 'a';
if (p->next[id] == NULL)
return false;
p = p->next[id];
++ch;
}
return p->flag;
}
int main()
{
Trie root = InitTrieNode();
cout<<"请输入需要的单词数:"<<endl;
int n;
char str[25];
cin>>n;
while(n--){
cout<<"请输入单词:"<<endl;
cin>>str;
InsertNode(root, str);
}
cout<<endl<<"请输入需要的查询数:"<<endl;
cin>>n;
while(n--){
cout<<"请输入单词:"<<endl;
cin>>str;
if (TrieSearch(root, str)) cout<<"该单词存在"<<endl<<endl;
else cout<<"该单词不存在"<<endl<<endl;
}
return 0;
}
Trie树模板(插入和查询)
最新推荐文章于 2022-09-17 16:39:49 发布