Naive Implementation
Last updated
Was this helpful?
Last updated
Was this helpful?
This is also known as a keyword tree, but it accomplishes the same task.
Disadvantages:
Not compressed, traversals are redundant in some parts.
Use of literal characters rather than indices, so its also not space efficient.
time complexity. For construction of single word of size , every suffixes of quantity are inserted character by character by traversing down through the tree.
Advantages:
Less error prone
Simple to implement
Works
Output
Implementation Details
How this algorithm works can be summarized in the _insert
method. Basically, we are recreating a trie with a few minor changes such as the special character delimiter, and insertion of additional suffixes.
A trie is essentially a n-ary tree. Since we know that each node that carries a character is guarenteed to be unique, we can substitute a vector
with an unordered_map
. For each word that gets inserted, its characters guide its traversal down the tree. If no node is found, a new one gets created. The leaf nodes, indicated by the special character delimiter carry the occurrences of a suffix.