2.1.1 • Published 4 years ago

ternary-search-trie v2.1.1

Weekly downloads
12
License
MIT
Repository
github
Last release
4 years ago

Ternary Search Trie

A ternary search trie implementation in TypeScript.

Installing

You can install the package via npm or yarn.

NPM

npm install ternary-search-trie

Yarn

yarn add ternary-search-trie

Documentation

Trie

Represents a ternary search trie.

Usage

import { Trie } from 'ternary-search-trie';

interface Value {
  data: string;
}

const trie = new Trie<Value>();

Members

isEmpty

Returns true if the tree contains any nodes, otherwise false.

console.log(trie.isEmpty);
//=> true

size

Gets the size of the tree in terms of the number of nodes present within the tree.

console.log(trie.size);
//=> 0

Methods

set

set(key: string, value: Value): Trie<Value>

Adds the specified key/value pair to the tree.

Example:

const value = { data: 'test' };

trie.set('data', value);

get

get(key: string): Value | null

Returns the value of the node with the specified key.

Example:

const value = { data: 'test' };

trie.set('data', value);

console.log(trie.get('data'));
//=> { data: 'test' }

del

del(key: string): Trie<Value>

Deletes the node with the specified key.

Example:

const value = { data: 'test' };

trie.set('data', value);

console.log(trie.get('data'));
//=> { data: 'test' }

trie.del('data');

console.log(trie.get('data'));
//=> null;

contains

contains(key: string): boolean

Checks if a node with the specified key exists in the tree.

Example:

console.log(trie.contains('foo'));
//=> false

keys

keys(): string[]

Returns an array of all keys present in the tree.

Example:

const value = { data: 'test' };

trie.set('foo', value);
trie.set('bar', value);
trie.set('baz', value);

console.log(trie.keys());
//=>  [ 'bar', 'baz', 'foo' ]

keysWithPrefix

keysWithPrefix(prefix: string): string[]

Returns all keys present in the tree that begin with the specified prefix.

Example:

const value = { data: 'test' };

trie.set('foo', value);
trie.set('bar', value);
trie.set('baz', value);

console.log(trie.keysWithPrefix('ba'));
//=>  [ 'bar', 'baz' ]

searchWithPrefix

searchWithPrefix(prefix: string, callback: (key: string, value: Value) => void): void;

Executes the specified callback at each node in the tree whose key begins with the specified prefix.

Example:

const value = { data: 'test' };

trie.set('foo', value);
trie.set('bar', value);
trie.set('baz', value);

trie.searchWithPrefix('ba', (key, value) => console.log({ key, value }));
//=> { key: 'bar', value: { data: 'test' } }
//=> { key: 'baz', value: { data: 'test' } }

dfs

dfs(callback: (key: string, value: Value | null) => void): void;

Performs a depth-first search of the tree beginning from the root node. Executes the specified callback at each visited node.

Example:

const value = { data: 'test' };

trie.set('foo', value);

trie.dfs((key, value) => console.log({ key, value }));
//=> { key: 'f', value: null }
//=> { key: 'o', value: null }
//=> { key: 'o', value: { data: 'test' } }

toString()

Returns the tree as a string.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments

  • This project was heavily inspired by work done by @jakwings on node-ternary-search-trie. This project differs in that it is written in TypeScript and chose to implement the underlying functionality of the tree by making heavy use of recursion instead of loops.
2.1.1

4 years ago

2.1.0

4 years ago

2.0.0

4 years ago

1.1.0

5 years ago

1.0.0

5 years ago