Trie Data Structure Code

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;
}

Post a Comment

0 Comments