• Stars
    star
    26
  • Rank 892,617 (Top 19 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ”€ Trie data structure implementation

@datastructures-js/trie

npm npm npm

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