data-structure-typed 2.4.5 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
- package/CHANGELOG.md +3 -1
- package/README.md +78 -31
- package/dist/cjs/binary-tree.cjs +23698 -0
- package/dist/cjs/graph.cjs +5236 -0
- package/dist/cjs/hash.cjs +1262 -0
- package/dist/cjs/heap.cjs +1540 -0
- package/dist/cjs/index.cjs +24509 -2899
- package/dist/cjs/linked-list.cjs +4370 -0
- package/dist/cjs/matrix.cjs +1042 -0
- package/dist/cjs/priority-queue.cjs +1314 -0
- package/dist/cjs/queue.cjs +4090 -0
- package/dist/cjs/stack.cjs +861 -0
- package/dist/cjs/trie.cjs +1173 -0
- package/dist/cjs-legacy/binary-tree.cjs +23730 -0
- package/dist/cjs-legacy/graph.cjs +5234 -0
- package/dist/cjs-legacy/hash.cjs +1262 -0
- package/dist/cjs-legacy/heap.cjs +1537 -0
- package/dist/cjs-legacy/index.cjs +32555 -10936
- package/dist/cjs-legacy/linked-list.cjs +4376 -0
- package/dist/cjs-legacy/matrix.cjs +1045 -0
- package/dist/cjs-legacy/priority-queue.cjs +1312 -0
- package/dist/cjs-legacy/queue.cjs +4088 -0
- package/dist/cjs-legacy/stack.cjs +861 -0
- package/dist/cjs-legacy/trie.cjs +1172 -0
- package/dist/esm/binary-tree.mjs +23683 -0
- package/dist/esm/graph.mjs +5223 -0
- package/dist/esm/hash.mjs +1259 -0
- package/dist/esm/heap.mjs +1534 -0
- package/dist/esm/index.mjs +24507 -2898
- package/dist/esm/linked-list.mjs +4363 -0
- package/dist/esm/matrix.mjs +1038 -0
- package/dist/esm/priority-queue.mjs +1310 -0
- package/dist/esm/queue.mjs +4086 -0
- package/dist/esm/stack.mjs +859 -0
- package/dist/esm/trie.mjs +1170 -0
- package/dist/esm-legacy/binary-tree.mjs +23715 -0
- package/dist/esm-legacy/graph.mjs +5221 -0
- package/dist/esm-legacy/hash.mjs +1259 -0
- package/dist/esm-legacy/heap.mjs +1531 -0
- package/dist/esm-legacy/index.mjs +32553 -10935
- package/dist/esm-legacy/linked-list.mjs +4369 -0
- package/dist/esm-legacy/matrix.mjs +1041 -0
- package/dist/esm-legacy/priority-queue.mjs +1308 -0
- package/dist/esm-legacy/queue.mjs +4084 -0
- package/dist/esm-legacy/stack.mjs +859 -0
- package/dist/esm-legacy/trie.mjs +1169 -0
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +368 -51
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +473 -147
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +931 -80
- package/dist/types/data-structures/binary-tree/bst.d.ts +792 -29
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +592 -32
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +320 -135
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +3662 -6
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3487 -201
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2778 -65
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +3414 -6
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +419 -47
- package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
- package/dist/types/data-structures/graph/undirected-graph.d.ts +384 -59
- package/dist/types/data-structures/hash/hash-map.d.ts +462 -89
- package/dist/types/data-structures/heap/heap.d.ts +567 -99
- package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
- package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +631 -49
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +581 -68
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +775 -12
- package/dist/types/data-structures/matrix/matrix.d.ts +491 -0
- package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
- package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
- package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
- package/dist/types/data-structures/queue/deque.d.ts +578 -71
- package/dist/types/data-structures/queue/queue.d.ts +451 -42
- package/dist/types/data-structures/stack/stack.d.ts +374 -32
- package/dist/types/data-structures/trie/trie.d.ts +458 -48
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/data-structure-typed.js +32432 -10808
- package/dist/umd/data-structure-typed.min.js +10 -4
- package/docs-site-docusaurus/README.md +41 -0
- package/docs-site-docusaurus/docs/api/README.md +52 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
- package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
- package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
- package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
- package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
- package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
- package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
- package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
- package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
- package/docs-site-docusaurus/docs/guide/guides.md +611 -0
- package/docs-site-docusaurus/docs/guide/installation.md +60 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
- package/docs-site-docusaurus/docs/guide/overview.md +638 -0
- package/docs-site-docusaurus/docs/guide/performance.md +833 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
- package/docs-site-docusaurus/docusaurus.config.ts +159 -0
- package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
- package/docs-site-docusaurus/package-lock.json +18667 -0
- package/docs-site-docusaurus/package.json +50 -0
- package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
- package/docs-site-docusaurus/sidebars.ts +23 -0
- package/docs-site-docusaurus/sort-protected.mjs +87 -0
- package/docs-site-docusaurus/src/css/custom.css +96 -0
- package/docs-site-docusaurus/src/pages/index.module.css +13 -0
- package/docs-site-docusaurus/src/pages/index.tsx +71 -0
- package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
- package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
- package/docs-site-docusaurus/static/.nojekyll +0 -0
- package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
- package/docs-site-docusaurus/static/img/favicon.ico +0 -0
- package/docs-site-docusaurus/static/img/favicon.png +0 -0
- package/docs-site-docusaurus/static/img/logo-180.png +0 -0
- package/docs-site-docusaurus/static/img/logo.jpg +0 -0
- package/docs-site-docusaurus/static/img/logo.png +0 -0
- package/docs-site-docusaurus/static/img/logo.svg +1 -0
- package/docs-site-docusaurus/static/img/og-image.png +0 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docs-site-docusaurus/static/robots.txt +4 -0
- package/docs-site-docusaurus/typedoc.json +23 -0
- package/package.json +109 -12
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-element-base.ts +4 -5
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +386 -51
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
- package/src/data-structures/binary-tree/binary-tree.ts +956 -81
- package/src/data-structures/binary-tree/bst.ts +840 -35
- package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
- package/src/data-structures/binary-tree/segment-tree.ts +498 -249
- package/src/data-structures/binary-tree/tree-map.ts +3784 -7
- package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
- package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
- package/src/data-structures/binary-tree/tree-set.ts +3531 -10
- package/src/data-structures/graph/abstract-graph.ts +4 -4
- package/src/data-structures/graph/directed-graph.ts +429 -47
- package/src/data-structures/graph/map-graph.ts +59 -1
- package/src/data-structures/graph/undirected-graph.ts +393 -59
- package/src/data-structures/hash/hash-map.ts +476 -92
- package/src/data-structures/heap/heap.ts +581 -99
- package/src/data-structures/heap/max-heap.ts +46 -0
- package/src/data-structures/heap/min-heap.ts +59 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
- package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
- package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
- package/src/data-structures/matrix/matrix.ts +584 -12
- package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
- package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
- package/src/data-structures/priority-queue/priority-queue.ts +60 -0
- package/src/data-structures/queue/deque.ts +592 -70
- package/src/data-structures/queue/queue.ts +463 -42
- package/src/data-structures/stack/stack.ts +384 -32
- package/src/data-structures/trie/trie.ts +470 -48
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
- package/vercel.json +6 -0
- package/dist/leetcode/avl-tree-counter.mjs +0 -2957
- package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
- package/dist/leetcode/avl-tree.mjs +0 -2720
- package/dist/leetcode/binary-tree.mjs +0 -1594
- package/dist/leetcode/bst.mjs +0 -2398
- package/dist/leetcode/deque.mjs +0 -683
- package/dist/leetcode/directed-graph.mjs +0 -1733
- package/dist/leetcode/doubly-linked-list.mjs +0 -709
- package/dist/leetcode/hash-map.mjs +0 -493
- package/dist/leetcode/heap.mjs +0 -542
- package/dist/leetcode/max-heap.mjs +0 -375
- package/dist/leetcode/max-priority-queue.mjs +0 -383
- package/dist/leetcode/min-heap.mjs +0 -363
- package/dist/leetcode/min-priority-queue.mjs +0 -371
- package/dist/leetcode/priority-queue.mjs +0 -363
- package/dist/leetcode/queue.mjs +0 -943
- package/dist/leetcode/red-black-tree.mjs +0 -2765
- package/dist/leetcode/singly-linked-list.mjs +0 -754
- package/dist/leetcode/stack.mjs +0 -217
- package/dist/leetcode/tree-counter.mjs +0 -3039
- package/dist/leetcode/tree-multi-map.mjs +0 -2913
- package/dist/leetcode/trie.mjs +0 -413
- package/dist/leetcode/undirected-graph.mjs +0 -1650
|
@@ -77,32 +77,6 @@ export declare class TrieNode {
|
|
|
77
77
|
* 10. IP Routing: Used in certain types of IP routing algorithms.
|
|
78
78
|
* 11. Text Word Frequency Count: Counting and storing the frequency of words in a large amount of text data.
|
|
79
79
|
* @example
|
|
80
|
-
* // basic Trie creation and add words
|
|
81
|
-
* // Create a simple Trie with initial words
|
|
82
|
-
* const trie = new Trie(['apple', 'app', 'apply']);
|
|
83
|
-
*
|
|
84
|
-
* // Verify size
|
|
85
|
-
* console.log(trie.size); // 3;
|
|
86
|
-
*
|
|
87
|
-
* // Check if words exist
|
|
88
|
-
* console.log(trie.has('apple')); // true;
|
|
89
|
-
* console.log(trie.has('app')); // true;
|
|
90
|
-
*
|
|
91
|
-
* // Add a new word
|
|
92
|
-
* trie.add('application');
|
|
93
|
-
* console.log(trie.size); // 4;
|
|
94
|
-
* @example
|
|
95
|
-
* // Trie getWords and prefix search
|
|
96
|
-
* const trie = new Trie(['apple', 'app', 'apply', 'application', 'apricot']);
|
|
97
|
-
*
|
|
98
|
-
* // Get all words with prefix 'app'
|
|
99
|
-
* const appWords = trie.getWords('app');
|
|
100
|
-
* console.log(appWords); // contains 'app';
|
|
101
|
-
* console.log(appWords); // contains 'apple';
|
|
102
|
-
* console.log(appWords); // contains 'apply';
|
|
103
|
-
* console.log(appWords); // contains 'application';
|
|
104
|
-
* expect(appWords).not.toContain('apricot');
|
|
105
|
-
* @example
|
|
106
80
|
* // Trie isPrefix and isAbsolutePrefix checks
|
|
107
81
|
* const trie = new Trie(['tree', 'trial', 'trick', 'trip', 'trie']);
|
|
108
82
|
*
|
|
@@ -118,23 +92,6 @@ export declare class TrieNode {
|
|
|
118
92
|
* // Verify size
|
|
119
93
|
* console.log(trie.size); // 5;
|
|
120
94
|
* @example
|
|
121
|
-
* // Trie delete and iteration
|
|
122
|
-
* const trie = new Trie(['car', 'card', 'care', 'careful', 'can', 'cat']);
|
|
123
|
-
*
|
|
124
|
-
* // Delete a word
|
|
125
|
-
* trie.delete('card');
|
|
126
|
-
* console.log(trie.has('card')); // false;
|
|
127
|
-
*
|
|
128
|
-
* // Word with same prefix still exists
|
|
129
|
-
* console.log(trie.has('care')); // true;
|
|
130
|
-
*
|
|
131
|
-
* // Size decreased
|
|
132
|
-
* console.log(trie.size); // 5;
|
|
133
|
-
*
|
|
134
|
-
* // Iterate through all words
|
|
135
|
-
* const allWords = [...trie];
|
|
136
|
-
* console.log(allWords.length); // 5;
|
|
137
|
-
* @example
|
|
138
95
|
* // Trie for autocomplete search index
|
|
139
96
|
* // Trie is perfect for autocomplete: O(m + k) where m is prefix length, k is results
|
|
140
97
|
* const searchIndex = new Trie(['typescript', 'javascript', 'python', 'java', 'rust', 'ruby', 'golang', 'kotlin']);
|
|
@@ -261,6 +218,52 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
261
218
|
* @remarks Time O(L), Space O(L)
|
|
262
219
|
* @param word - Word to insert.
|
|
263
220
|
* @returns True if the word was newly added.
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
* @example
|
|
253
|
+
* // basic Trie creation and add words
|
|
254
|
+
* // Create a simple Trie with initial words
|
|
255
|
+
* const trie = new Trie(['apple', 'app', 'apply']);
|
|
256
|
+
*
|
|
257
|
+
* // Verify size
|
|
258
|
+
* console.log(trie.size); // 3;
|
|
259
|
+
*
|
|
260
|
+
* // Check if words exist
|
|
261
|
+
* console.log(trie.has('apple')); // true;
|
|
262
|
+
* console.log(trie.has('app')); // true;
|
|
263
|
+
*
|
|
264
|
+
* // Add a new word
|
|
265
|
+
* trie.add('application');
|
|
266
|
+
* console.log(trie.size); // 4;
|
|
264
267
|
*/
|
|
265
268
|
add(word: string): boolean;
|
|
266
269
|
/**
|
|
@@ -268,6 +271,41 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
268
271
|
* @remarks Time O(ΣL), Space O(ΣL)
|
|
269
272
|
* @param words - Iterable of strings (or raw records if toElementFn is provided).
|
|
270
273
|
* @returns Array of per-word 'added' flags.
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
* @example
|
|
303
|
+
* // Add multiple words
|
|
304
|
+
* const trie = new Trie();
|
|
305
|
+
* trie.addMany(['cat', 'car', 'card']);
|
|
306
|
+
* console.log(trie.has('cat')); // true;
|
|
307
|
+
* console.log(trie.has('car')); // true;
|
|
308
|
+
* console.log(trie.size); // 3;
|
|
271
309
|
*/
|
|
272
310
|
addMany(words: Iterable<string> | Iterable<R>): boolean[];
|
|
273
311
|
/**
|
|
@@ -275,18 +313,123 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
275
313
|
* @remarks Time O(L), Space O(1)
|
|
276
314
|
* @param word - Word to search for.
|
|
277
315
|
* @returns True if present.
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
* @example
|
|
348
|
+
* // Check if a word exists
|
|
349
|
+
* const dict = new Trie(['apple', 'app', 'application']);
|
|
350
|
+
*
|
|
351
|
+
* console.log(dict.has('app')); // true;
|
|
352
|
+
* console.log(dict.has('apple')); // true;
|
|
353
|
+
* console.log(dict.has('ap')); // false;
|
|
278
354
|
*/
|
|
279
355
|
has(word: string): boolean;
|
|
280
356
|
/**
|
|
281
357
|
* Check whether the trie is empty.
|
|
282
358
|
* @remarks Time O(1), Space O(1)
|
|
283
359
|
* @returns True if size is 0.
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
* @example
|
|
389
|
+
* // Check if empty
|
|
390
|
+
* const trie = new Trie();
|
|
391
|
+
* console.log(trie.isEmpty()); // true;
|
|
392
|
+
* trie.add('word');
|
|
393
|
+
* console.log(trie.isEmpty()); // false;
|
|
284
394
|
*/
|
|
285
395
|
isEmpty(): boolean;
|
|
286
396
|
/**
|
|
287
397
|
* Remove all words and reset to a fresh root.
|
|
288
398
|
* @remarks Time O(1), Space O(1)
|
|
289
399
|
* @returns void
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
* @example
|
|
429
|
+
* // Remove all words
|
|
430
|
+
* const trie = new Trie(['a', 'b', 'c']);
|
|
431
|
+
* trie.clear();
|
|
432
|
+
* console.log(trie.isEmpty()); // true;
|
|
290
433
|
*/
|
|
291
434
|
clear(): void;
|
|
292
435
|
/**
|
|
@@ -294,6 +437,54 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
294
437
|
* @remarks Time O(L), Space O(1)
|
|
295
438
|
* @param word - Word to delete.
|
|
296
439
|
* @returns True if a word was removed.
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
* @example
|
|
472
|
+
* // Trie delete and iteration
|
|
473
|
+
* const trie = new Trie(['car', 'card', 'care', 'careful', 'can', 'cat']);
|
|
474
|
+
*
|
|
475
|
+
* // Delete a word
|
|
476
|
+
* trie.delete('card');
|
|
477
|
+
* console.log(trie.has('card')); // false;
|
|
478
|
+
*
|
|
479
|
+
* // Word with same prefix still exists
|
|
480
|
+
* console.log(trie.has('care')); // true;
|
|
481
|
+
*
|
|
482
|
+
* // Size decreased
|
|
483
|
+
* console.log(trie.size); // 5;
|
|
484
|
+
*
|
|
485
|
+
* // Iterate through all words
|
|
486
|
+
* const allWords = [...trie];
|
|
487
|
+
* console.log(allWords.length); // 5;
|
|
297
488
|
*/
|
|
298
489
|
delete(word: string): boolean;
|
|
299
490
|
/**
|
|
@@ -314,6 +505,44 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
314
505
|
* @remarks Time O(L), Space O(1)
|
|
315
506
|
* @param input - String to test as prefix.
|
|
316
507
|
* @returns True if input matches a path from root.
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
* @example
|
|
540
|
+
* // Check if a prefix exists
|
|
541
|
+
* const trie = new Trie(['hello', 'help', 'world']);
|
|
542
|
+
*
|
|
543
|
+
* console.log(trie.hasPrefix('hel')); // true;
|
|
544
|
+
* console.log(trie.hasPrefix('wor')); // true;
|
|
545
|
+
* console.log(trie.hasPrefix('xyz')); // false;
|
|
317
546
|
*/
|
|
318
547
|
hasPrefix(input: string): boolean;
|
|
319
548
|
/**
|
|
@@ -327,6 +556,42 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
327
556
|
* Return the longest common prefix among all words.
|
|
328
557
|
* @remarks Time O(H), Space O(1)
|
|
329
558
|
* @returns The longest common prefix string.
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
* @example
|
|
591
|
+
* // Find shared prefix
|
|
592
|
+
* const trie = new Trie(['flower', 'flow', 'flight']);
|
|
593
|
+
*
|
|
594
|
+
* console.log(trie.getLongestCommonPrefix()); // 'fl';
|
|
330
595
|
*/
|
|
331
596
|
getLongestCommonPrefix(): string;
|
|
332
597
|
/**
|
|
@@ -336,12 +601,88 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
336
601
|
* @param [max] - Maximum number of words to return; default is Number.MAX_SAFE_INTEGER.
|
|
337
602
|
* @param [isAllWhenEmptyPrefix] - When true, collect from root even if prefix is empty.
|
|
338
603
|
* @returns Array of collected words (at most max).
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
* @example
|
|
636
|
+
* // Trie getWords and prefix search
|
|
637
|
+
* const trie = new Trie(['apple', 'app', 'apply', 'application', 'apricot']);
|
|
638
|
+
*
|
|
639
|
+
* // Get all words with prefix 'app'
|
|
640
|
+
* const appWords = trie.getWords('app');
|
|
641
|
+
* console.log(appWords); // contains 'app';
|
|
642
|
+
* console.log(appWords); // contains 'apple';
|
|
643
|
+
* console.log(appWords); // contains 'apply';
|
|
644
|
+
* console.log(appWords); // contains 'application';
|
|
645
|
+
* expect(appWords).not.toContain('apricot');
|
|
339
646
|
*/
|
|
340
647
|
getWords(prefix?: string, max?: number, isAllWhenEmptyPrefix?: boolean): string[];
|
|
341
648
|
/**
|
|
342
649
|
* Deep clone this trie by iterating and inserting all words.
|
|
343
650
|
* @remarks Time O(ΣL), Space O(ΣL)
|
|
344
651
|
* @returns A new trie with the same words and options.
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
* @example
|
|
681
|
+
* // Create independent copy
|
|
682
|
+
* const trie = new Trie(['hello', 'world']);
|
|
683
|
+
* const copy = trie.clone();
|
|
684
|
+
* copy.delete('hello');
|
|
685
|
+
* console.log(trie.has('hello')); // true;
|
|
345
686
|
*/
|
|
346
687
|
clone(): this;
|
|
347
688
|
/**
|
|
@@ -350,9 +691,78 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
350
691
|
* @param predicate - Predicate (word, index, trie) → boolean to keep word.
|
|
351
692
|
* @param [thisArg] - Value for `this` inside the predicate.
|
|
352
693
|
* @returns A new trie containing words that satisfy the predicate.
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
* @example
|
|
723
|
+
* // Filter words
|
|
724
|
+
* const trie = new Trie(['cat', 'car', 'dog', 'card']);
|
|
725
|
+
* const result = trie.filter(w => w.startsWith('ca'));
|
|
726
|
+
* console.log(result.size); // 3;
|
|
727
|
+
*/
|
|
728
|
+
filter(predicate: ElementCallback<string, R, boolean>, thisArg?: unknown): this;
|
|
729
|
+
/**
|
|
730
|
+
* Transform words
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
* @example
|
|
760
|
+
* // Transform words
|
|
761
|
+
* const trie = new Trie(['hello', 'world']);
|
|
762
|
+
* const upper = trie.map(w => w.toUpperCase());
|
|
763
|
+
* console.log(upper.has('HELLO')); // true;
|
|
764
|
+
*/
|
|
765
|
+
map<RM>(callback: ElementCallback<string, R, string>, options?: TrieOptions<RM>, thisArg?: unknown): Trie<RM>;
|
|
356
766
|
/**
|
|
357
767
|
* Map words into a new trie (possibly different record type).
|
|
358
768
|
* @remarks Time O(ΣL), Space O(ΣL)
|
|
@@ -363,7 +773,7 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
363
773
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
364
774
|
* @returns A new Trie constructed from mapped words.
|
|
365
775
|
*/
|
|
366
|
-
map<EM, RM>(callback: ElementCallback<string, R, EM>, options?: TrieOptions<RM>, thisArg?:
|
|
776
|
+
map<EM, RM>(callback: ElementCallback<string, R, EM>, options?: TrieOptions<RM>, thisArg?: unknown): IterableElementBase<EM, RM>;
|
|
367
777
|
/**
|
|
368
778
|
* Map words into a new trie of the same element type.
|
|
369
779
|
* @remarks Time O(ΣL), Space O(ΣL)
|
|
@@ -371,7 +781,7 @@ export declare class Trie<R = any> extends IterableElementBase<string, R> {
|
|
|
371
781
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
372
782
|
* @returns A new trie with mapped words.
|
|
373
783
|
*/
|
|
374
|
-
mapSame(callback: ElementCallback<string, R, string>, thisArg?:
|
|
784
|
+
mapSame(callback: ElementCallback<string, R, string>, thisArg?: unknown): this;
|
|
375
785
|
/**
|
|
376
786
|
* (Protected) Create an empty instance of the same concrete class.
|
|
377
787
|
* @remarks Time O(1), Space O(1)
|
|
@@ -5,10 +5,10 @@ export type Comparator<K> = (a: K, b: K) => number;
|
|
|
5
5
|
export type DFSOrderPattern = 'PRE' | 'IN' | 'POST';
|
|
6
6
|
export type NodeDisplayLayout = [string[], number, number, number];
|
|
7
7
|
export interface IterableWithSize<T> extends Iterable<T> {
|
|
8
|
-
size: number | ((...args:
|
|
8
|
+
size: number | ((...args: unknown[]) => number);
|
|
9
9
|
}
|
|
10
10
|
export interface IterableWithLength<T> extends Iterable<T> {
|
|
11
|
-
length: number | ((...args:
|
|
11
|
+
length: number | ((...args: unknown[]) => number);
|
|
12
12
|
}
|
|
13
13
|
export type OptValue<V> = V | undefined;
|
|
14
14
|
export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
export type KeyValueObject = {
|
|
2
|
-
[key: string]:
|
|
2
|
+
[key: string]: unknown;
|
|
3
3
|
};
|
|
4
4
|
export type KeyValueObjectWithKey = {
|
|
5
|
-
[key: string]:
|
|
5
|
+
[key: string]: unknown;
|
|
6
6
|
key: string | number | symbol;
|
|
7
7
|
};
|
|
8
8
|
export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
|
|
9
9
|
export type ObjectWithoutKey = Omit<KeyValueObject, 'key'>;
|
|
10
10
|
export type ObjectWithNonNumberKey = {
|
|
11
|
-
[key: string]:
|
|
11
|
+
[key: string]: unknown;
|
|
12
12
|
key: string | boolean | symbol | null | object | undefined;
|
|
13
13
|
};
|
|
14
14
|
export type ObjectWithNumberKey = {
|
|
15
|
-
[key: string]:
|
|
15
|
+
[key: string]: unknown;
|
|
16
16
|
key: number;
|
|
17
17
|
};
|
|
18
18
|
export type RestrictValByKey = NonNumberNonObjectButDefined | ObjectWithoutKey | ObjectWithNonNumberKey | ObjectWithNumberKey;
|