using System.Collections.Generic;
public static void Main()
Trie trieObj = new Trie();
trieObj.PrefixSearch("ra");
public Dictionary<char,TrieNode> Node ;
Node = new Dictionary<char,TrieNode>();
public void Insert(string strData)
for(int i=0;i<=strData.Length-1;i++)
if(!current.Node.TryGetValue(strData[i],out tempNode))
tempNode = new TrieNode();
current.Node.Add(strData[i],tempNode);
Console.WriteLine("Print All - Content as follows:");
PrintTree(Root,new StringBuilder());
private void PrintTree(TrieNode node, StringBuilder strBuild)
Console.WriteLine(strBuild.ToString());
foreach(KeyValuePair<char,TrieNode> charkey in node.Node)
strBuild = strBuild.Append(charkey.Key);
PrintTree(charkey.Value,strBuild);
strBuild = strBuild.Remove(strBuild.Length-1,1);
public void PrefixSearch(string prefixTxt)
StringBuilder strBuild = new StringBuilder();
for(int i=0; i<=prefixTxt.Length-1;i++)
if(current.Node.TryGetValue(prefixTxt[i],out tempNode))
strBuild.Append(prefixTxt[i]);
Console.WriteLine("Prefix Search - Content as follows: ");
PrintTree(current,strBuild);
Console.WriteLine("Prefix Search - Content not found");
public void Search(string searchWrd)
StringBuilder strBuild = new StringBuilder();
for(int i=0; i<=searchWrd.Length-1;i++)
if(current.Node.TryGetValue(searchWrd[i],out tempNode))
strBuild.Append(searchWrd[i]);
isFound = current.isTail;
Console.WriteLine("Search - Content found: {0}",strBuild.ToString());
Console.WriteLine("Prefix Search - Content not found");
public void Delete(string word)
bool isFound = Delete(Root,word,0);
Console.WriteLine("{0} found and deleted = {1}.",word,isFound);
private bool Delete(TrieNode node,string word, int index)
if(word.Length-1 < index)
if(node.Node.TryGetValue(c,out current))
bool toDelete = Delete(current,word,++index);
if(toDelete && current.Node.Count == 0)