Socket
Socket
Sign inDemoInstall

@datastructures-js/trie

Package Overview
Dependencies
0
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datastructures-js/trie

trie implementation in javascript


Version published
Maintainers
1
Weekly downloads
2,285
decreased by-63.05%

Weekly downloads

Readme

Source

@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

Keywords

FAQs

Last updated on 16 Aug 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc