@datastructures-js/trie
Trie implementation in javascript. Each Trie node holds one character of a word.
Contents
Install
npm install --save @datastructures-js/trie
require
const { Trie, TrieNode } = require('@datastructures-js/trie');
import
import { Trie, TrieNode } from '@datastructures-js/trie';
API
constructor
const dictionary = new Trie();
insert
insert the string form of value (value.toString()
) into the trie.
Note: the empty string is not a default word in the trie. empty word can be added by explicitly calling .insert('')
dictionary
.insert('hi')
.insert('hit')
.insert('hide')
.insert('hello')
.insert('sand')
.insert('safe')
.insert('noun')
.insert('name');
has
checks if a word exists in the trie.
dictionary.has('hi'); // true
dictionary.has('sky'); // false
find
finds a word in the trie and returns the node of its last character.
const hi = dictionary.find('hi');
// hi.getChar() = 'i'
// hi.getParent().getChar() = 'h'
const safe = dictionary.find('safe');
// safe.getChar() = 'e'
// safe.getParent().getChar() = 'f'
// safe.getParent().getParent().getChar() = 'a'
const nothing = dictionary.find('nothing'); // null
remove
removes a word from the trie.
dictionary.remove('hi'); // hi
// none existing word
dictionary.remove('sky'); // null
forEach
traverses all words in the trie.
dictionary.forEach((word) => console.log(word));
/*
hit
hide
hello
sand
safe
noun
name
*/
toArray
converts the trie into an array of words.
console.log(dictionary.toArray());
// ['hit', 'hide', 'hello', 'sand', 'safe', 'noun', 'name']
wordsCount
gets the count of words in the trie.
console.log(dictionary.wordsCount()); // 7
nodesCount
gets the count of nodes in the trie.
console.log(dictionary.nodesCount()); // 23
clear
clears the trie.
dictionary.clear();
console.log(dictionary.wordsCount()); // 0
console.log(dictionary.nodesCount()); // 1
Trie.fromArray
converts an existing array of values into a trie.
const numbersTrie = Trie.fromArray([1, 32, 123, 21, 222, 132, 111, 312]);
console.log(numbersTrie.wordsCount()); // 8
console.log(numbersTrie.has('132')); // true
console.log(numbersTrie.has(123)); // true
TrieNode
isRoot()
checks if node is root.
isLeaf()
checks if has no children.
getChar()
gets the node's char.
getParent()
gets the node's parent node.
setParent(node: TrieNode)
sets the node's parent node.
isEndOfWord()
checks if node's char is last in a word.
setEndOfWord(endOfWord: boolean)
sets if node's char is last in a word.
getChild(char: string)
gets the node's child from a char.
hasChild(char: string)
checks if the node has a child from a char.
childrenCount()
gets the node's children count.
Build
grunt build
License
The MIT License. Full License is here