using System.Collections.Generic;
static int MAX_CHAR = 256;
public SuffixTrieNode[] children = new SuffixTrieNode[MAX_CHAR];
public List<int> indexes;
indexes = new List<int>();
for (int i = 0; i < MAX_CHAR; i++)
public void insertSuffix(String s, int index)
if (children[cIndex] == null)
children[cIndex] = new SuffixTrieNode();
children[cIndex].insertSuffix(s.Substring(1),
public List<int> search(String s)
if (children[s[0]] != null)
return (children[s[0]]).search(s.Substring(1));
SuffixTrieNode root = new SuffixTrieNode();
for (int i = 0; i < txt.Length; i++)
root.insertSuffix(txt.Substring(i), i);
void search_tree(String pat)
List<int> result = root.search(pat);
Console.WriteLine("Pattern not found");
foreach (int i in result)
Console.WriteLine("Pattern found at position " +
public static void Main(String []args)
String txt = "geeksforgeeks.org";
Suffix_tree S = new Suffix_tree(txt);
Console.WriteLine("Search for 'ee'");
Console.WriteLine("\nSearch for 'geek'");
Console.WriteLine("\nSearch for 'quiz'");
Console.WriteLine("\nSearch for 'forgeeks'");
S.search_tree("forgeeks");