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.
Files changed (240) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +78 -31
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +24509 -2899
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +32555 -10936
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +24507 -2898
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +32553 -10935
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
  54. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  55. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  56. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +368 -51
  57. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +473 -147
  58. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +931 -80
  59. package/dist/types/data-structures/binary-tree/bst.d.ts +792 -29
  60. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +592 -32
  61. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +320 -135
  62. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3662 -6
  63. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3487 -201
  64. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2778 -65
  65. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3414 -6
  66. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  67. package/dist/types/data-structures/graph/directed-graph.d.ts +419 -47
  68. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  69. package/dist/types/data-structures/graph/undirected-graph.d.ts +384 -59
  70. package/dist/types/data-structures/hash/hash-map.d.ts +462 -89
  71. package/dist/types/data-structures/heap/heap.d.ts +567 -99
  72. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  73. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  74. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +631 -49
  75. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +581 -68
  76. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +775 -12
  77. package/dist/types/data-structures/matrix/matrix.d.ts +491 -0
  78. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  79. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  80. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  81. package/dist/types/data-structures/queue/deque.d.ts +578 -71
  82. package/dist/types/data-structures/queue/queue.d.ts +451 -42
  83. package/dist/types/data-structures/stack/stack.d.ts +374 -32
  84. package/dist/types/data-structures/trie/trie.d.ts +458 -48
  85. package/dist/types/interfaces/graph.d.ts +1 -1
  86. package/dist/types/types/common.d.ts +2 -2
  87. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  88. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  89. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  90. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  91. package/dist/types/types/utils/validate-type.d.ts +4 -4
  92. package/dist/umd/data-structure-typed.js +32432 -10808
  93. package/dist/umd/data-structure-typed.min.js +10 -4
  94. package/docs-site-docusaurus/README.md +41 -0
  95. package/docs-site-docusaurus/docs/api/README.md +52 -0
  96. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  97. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  98. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  99. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  100. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  101. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  102. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  103. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  104. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  105. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  106. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  107. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  108. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  109. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  110. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  111. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  112. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  113. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  114. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  115. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  116. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  117. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  118. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  119. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  120. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  121. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  122. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  123. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  124. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  125. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  126. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  127. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  128. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  129. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  130. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  131. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  132. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  133. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  134. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  135. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  136. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  137. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  138. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  139. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  140. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  141. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  142. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  143. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  144. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  145. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  146. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  147. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  148. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  149. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  150. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  151. package/docs-site-docusaurus/package-lock.json +18667 -0
  152. package/docs-site-docusaurus/package.json +50 -0
  153. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  154. package/docs-site-docusaurus/sidebars.ts +23 -0
  155. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  156. package/docs-site-docusaurus/src/css/custom.css +96 -0
  157. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  158. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  159. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  160. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  161. package/docs-site-docusaurus/static/.nojekyll +0 -0
  162. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  163. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  164. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  165. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  166. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  167. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  168. package/docs-site-docusaurus/static/img/logo.png +0 -0
  169. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  170. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  171. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  172. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  173. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  174. package/docs-site-docusaurus/static/robots.txt +4 -0
  175. package/docs-site-docusaurus/typedoc.json +23 -0
  176. package/package.json +109 -12
  177. package/src/data-structures/base/index.ts +1 -0
  178. package/src/data-structures/base/iterable-element-base.ts +4 -5
  179. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  180. package/src/data-structures/base/linear-base.ts +3 -3
  181. package/src/data-structures/binary-tree/avl-tree.ts +386 -51
  182. package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
  183. package/src/data-structures/binary-tree/binary-tree.ts +956 -81
  184. package/src/data-structures/binary-tree/bst.ts +840 -35
  185. package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
  186. package/src/data-structures/binary-tree/segment-tree.ts +498 -249
  187. package/src/data-structures/binary-tree/tree-map.ts +3784 -7
  188. package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
  189. package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
  190. package/src/data-structures/binary-tree/tree-set.ts +3531 -10
  191. package/src/data-structures/graph/abstract-graph.ts +4 -4
  192. package/src/data-structures/graph/directed-graph.ts +429 -47
  193. package/src/data-structures/graph/map-graph.ts +59 -1
  194. package/src/data-structures/graph/undirected-graph.ts +393 -59
  195. package/src/data-structures/hash/hash-map.ts +476 -92
  196. package/src/data-structures/heap/heap.ts +581 -99
  197. package/src/data-structures/heap/max-heap.ts +46 -0
  198. package/src/data-structures/heap/min-heap.ts +59 -0
  199. package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
  200. package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
  201. package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
  202. package/src/data-structures/matrix/matrix.ts +584 -12
  203. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  204. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  205. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  206. package/src/data-structures/queue/deque.ts +592 -70
  207. package/src/data-structures/queue/queue.ts +463 -42
  208. package/src/data-structures/stack/stack.ts +384 -32
  209. package/src/data-structures/trie/trie.ts +470 -48
  210. package/src/interfaces/graph.ts +1 -1
  211. package/src/types/common.ts +2 -2
  212. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  213. package/src/types/data-structures/heap/heap.ts +1 -0
  214. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
  215. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  216. package/src/types/utils/validate-type.ts +4 -4
  217. package/vercel.json +6 -0
  218. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  219. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  220. package/dist/leetcode/avl-tree.mjs +0 -2720
  221. package/dist/leetcode/binary-tree.mjs +0 -1594
  222. package/dist/leetcode/bst.mjs +0 -2398
  223. package/dist/leetcode/deque.mjs +0 -683
  224. package/dist/leetcode/directed-graph.mjs +0 -1733
  225. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  226. package/dist/leetcode/hash-map.mjs +0 -493
  227. package/dist/leetcode/heap.mjs +0 -542
  228. package/dist/leetcode/max-heap.mjs +0 -375
  229. package/dist/leetcode/max-priority-queue.mjs +0 -383
  230. package/dist/leetcode/min-heap.mjs +0 -363
  231. package/dist/leetcode/min-priority-queue.mjs +0 -371
  232. package/dist/leetcode/priority-queue.mjs +0 -363
  233. package/dist/leetcode/queue.mjs +0 -943
  234. package/dist/leetcode/red-black-tree.mjs +0 -2765
  235. package/dist/leetcode/singly-linked-list.mjs +0 -754
  236. package/dist/leetcode/stack.mjs +0 -217
  237. package/dist/leetcode/tree-counter.mjs +0 -3039
  238. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  239. package/dist/leetcode/trie.mjs +0 -413
  240. 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
- filter(predicate: ElementCallback<string, R, boolean>, thisArg?: any): this;
355
- map<RM>(callback: ElementCallback<string, R, string>, options?: TrieOptions<RM>, thisArg?: any): Trie<RM>;
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?: any): IterableElementBase<EM, RM>;
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?: any): this;
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)
@@ -17,5 +17,5 @@ export interface IGraph<V, E, VO, EO> {
17
17
  isEmpty(): boolean;
18
18
  clear(): void;
19
19
  clone(): this;
20
- filter(...args: any[]): this;
20
+ filter(...args: unknown[]): this;
21
21
  }
@@ -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: any[]) => number);
8
+ size: number | ((...args: unknown[]) => number);
9
9
  }
10
10
  export interface IterableWithLength<T> extends Iterable<T> {
11
- length: number | ((...args: any[]) => number);
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 type SegmentTreeNodeVal = number;
1
+ export {};
@@ -1,5 +1,6 @@
1
1
  import { Comparator } from '../../common';
2
2
  import { IterableElementBaseOptions } from '../base';
3
+ /** Configuration options for Heap and PriorityQueue. */
3
4
  export type HeapOptions<E, R> = IterableElementBaseOptions<E, R> & {
4
5
  comparator?: Comparator<E>;
5
6
  };
@@ -1,4 +1 @@
1
- export type SkipLinkedListOptions = {
2
- maxLevel?: number;
3
- probability?: number;
4
- };
1
+ export {};
@@ -1,2 +1,3 @@
1
1
  import { HeapOptions } from '../heap';
2
+ /** Configuration options for PriorityQueue, same as {@link HeapOptions}. */
2
3
  export type PriorityQueueOptions<E, R> = HeapOptions<E, R>;
@@ -1,18 +1,18 @@
1
1
  export type KeyValueObject = {
2
- [key: string]: any;
2
+ [key: string]: unknown;
3
3
  };
4
4
  export type KeyValueObjectWithKey = {
5
- [key: string]: any;
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]: any;
11
+ [key: string]: unknown;
12
12
  key: string | boolean | symbol | null | object | undefined;
13
13
  };
14
14
  export type ObjectWithNumberKey = {
15
- [key: string]: any;
15
+ [key: string]: unknown;
16
16
  key: number;
17
17
  };
18
18
  export type RestrictValByKey = NonNumberNonObjectButDefined | ObjectWithoutKey | ObjectWithNonNumberKey | ObjectWithNumberKey;