Trie Data Structure Code
#include<bits/stdc++.h>
using namespace std;
class TrieNode{
char data;
bool isTerminal;
TrieNode* child[26];
public:
TrieNode(){
for (int i = 0; i < 26; i++)
{
child[i]=NULL;
}
isTerminal=false;
}
void addWord(string word,TrieNode* trie){
int n=word.size();
for(int i=0; i<n; i++){
if(trie->child[word[i]-'A']==NULL){
trie->child[word[i]-'A'] = new TrieNode();
}
trie=trie->child[word[i]-'A'];
}
trie->isTerminal=true;
}
void Print(TrieNode* trie){
if(trie==NULL)return;
for(int i=0; i<26; i++){
char c='A'+i;
if(trie->child[i]!=NULL)
cout<<c;
Print(trie->child[i]);
}
cout<<endl;
}
bool search(string word,TrieNode* trie){
int n=word.size();
for(int i=0; i<n; i++){
if(trie->child[word[i]-'A']==NULL)return false;
else trie=trie->child[word[i]-'A'];
}
if(trie->isTerminal)return true;
return false;
}
};
int main(){
vector<string>dict;
dict.push_back("RAUNIT");
dict.push_back("VERMA");
dict.push_back("RATING");
dict.push_back("RAIN");
dict.push_back("RED");
dict.push_back("REVIEW");
TrieNode* root=new TrieNode();
for(auto i:dict)root->addWord(i,root);
cout<<root->search("RA",root);
return 0;
}
0 Comments
If you have any doubts/suggestion/any query or want to improve this article, you can comment down below and let me know. Will reply to you soon.