Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sidvishnoi/compact-prefix-tree
A serializable compact prefix tree (also known as Radix tree or Patricia tree or space-optimized trie) implementation in JavaScript.
https://github.com/sidvishnoi/compact-prefix-tree
compact-prefix-tree data-structures patricia-tree prefix-tree prefix-trie radix-tree trie trie-tree
Last synced: about 1 month ago
JSON representation
A serializable compact prefix tree (also known as Radix tree or Patricia tree or space-optimized trie) implementation in JavaScript.
- Host: GitHub
- URL: https://github.com/sidvishnoi/compact-prefix-tree
- Owner: sidvishnoi
- Created: 2018-12-18T21:13:48.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-10-08T13:49:24.000Z (over 5 years ago)
- Last Synced: 2023-03-06T23:50:36.275Z (almost 2 years ago)
- Topics: compact-prefix-tree, data-structures, patricia-tree, prefix-tree, prefix-trie, radix-tree, trie, trie-tree
- Language: JavaScript
- Homepage:
- Size: 7.81 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Compact Prefix Tree
A serializable compact prefix tree (also known as Radix tree or Patricia tree or space-optimized trie) implementation in JavaScript.
## Usage
### Installation
``` bash
npm install compact-prefix-tree
```### General Usage
``` js
import { CompactPrefixTree } from "compact-prefix-tree/index.js";
// OR
const { CompactPrefixTree } = require("compact-prefix-tree/cjs");const items = [
"http://www.example.com/foo/",
"http://www.example.com/baz/",
];// create a trie from array of strings
const trie = new CompactPrefixTree(items);
// can add items later
trie.add("http://www.example.com/john/");// look for a prefix of a word
const p1 = trie.prefix("http://www.example.com/john/doe");
// p1: { prefix: "http://www.example.com/john/", isProper: true }
const p2 = trie.prefix("http://www.example.com/bazinga");
// p2: { prefix: "http://www.example.com/", isProper: false }
// above is not proper as it doesn't exist in list of items provided
```### Serialization
``` js
const { CompactPrefixTree, getWordsFromTrie } = require("compact-prefix-tree");
const items = [
"http://www.example.com/foo/",
"https://www.example.com/baz/",
];
const trie = new CompactPrefixTree(items);
const serialized = JSON.stringify(trie.T);
// {
// "http": {
// "://www.example.com/foo/": null,
// "s://www.example.com/baz/": null
// }
// }const words = getWordsFromTrie(JSON.parse(serialized));
// Set(2) {"http://www.example.com/foo/" "https://www.example.com/baz/"}const trie2 = new CompactPrefixTree(Array.from(words));
// assert(isEqual(trie.items, trie2.items));
```## License
[MIT License] Copyright 2018 Sid Vishnoi (https://sidvishnoi.github.io)