Tries are data structures that can be used to store sequences - e.g. words as sequences of letters.
Tries support faster and more precise query executions related to those sequences.
import { Trie } from "https://deno.land/x/tries/mod.ts"
const trie = new Trie()
const exampleSequence1 = "be"
const exampleSequence2 = "bet"
const exampleSequence3 = "bed"
const exampleSequence4 = "bed and breakfast"
const exampleSequence5 = "justice"
trie.insert(exampleSequence1)
trie.insert(exampleSequence3)
trie.insert(exampleSequence2)
trie.insert(exampleSequence5)
trie.insert(exampleSequence4)
console.log(trie.hasSequence(exampleSequence3)) // true
console.log(trie.hasSequence(exampleSequence4)) // true
console.log(trie.hasSequence("breakfast")) // false because it is not added as a discrete sequence
console.log(trie.hasSequence("missing")) // false
import { LettersWordsPredictionTrie } from "https://deno.land/x/tries/mod-letters-and-word-prediction.ts"
const lettersWordsPredictionTrie = new LettersWordsPredictionTrie()
lettersWordsPredictionTrie.learn(['ether', 'eth', 'ethereum', 'super'])
const brain = lettersWordsPredictionTrie.getBrain()
console.log(JSON.stringify(brain, undefined, 2))
A Radix Tree is a compressed version of a trie - see this introduction
There are several variations of Radix Trees. In some cases there is no consistent naming / definition to be found (yet?).
A rather famous variation of a Radix Tree is the PATRICIA Trie:
P Practical
A Algorithm
T To
R Retrieve
I Information
C Coded
I In
A Alphanumeric
PATRICIA Tries are Radix Trees with the radix 2.
Merkle PATRICIA Tries aka Merkle PATRICIA Trees became especially famous as in the Ethereum Blockchain pretty much everything (state trie, transaction trie, receipt trie, ...) is stored in those kinds of data structures. For details I can recommend this video. Keep in mind that (currently) some people use different words for the same thing and some people use the same word for different things in these contexts.
import merklePatriciaTree from 'https://cdn.skypack.dev/merkle-patricia-tree'
// For specific usage examples you might check https://www.skypack.dev/view/merkle-patricia-tree
... Under Construction ...
For further usage examples etc. please check the unit tests.
Contributions / Pull Requests are welcome.