data-structure-typed 2.6.0 → 2.6.2

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 (160) hide show
  1. package/.github/workflows/ci.yml +7 -2
  2. package/.github/workflows/release-package.yml +9 -2
  3. package/CHANGELOG.md +9 -1
  4. package/dist/cjs/binary-tree.cjs +2927 -23688
  5. package/dist/cjs/graph.cjs +845 -2634
  6. package/dist/cjs/hash.cjs +185 -616
  7. package/dist/cjs/heap.cjs +266 -818
  8. package/dist/cjs/index.cjs +5116 -31358
  9. package/dist/cjs/linked-list.cjs +644 -2615
  10. package/dist/cjs/matrix.cjs +220 -535
  11. package/dist/cjs/priority-queue.cjs +266 -818
  12. package/dist/cjs/queue.cjs +637 -2343
  13. package/dist/cjs/stack.cjs +124 -530
  14. package/dist/cjs/trie.cjs +145 -592
  15. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  16. package/dist/cjs-legacy/graph.cjs +847 -2636
  17. package/dist/cjs-legacy/hash.cjs +181 -612
  18. package/dist/cjs-legacy/heap.cjs +266 -818
  19. package/dist/cjs-legacy/index.cjs +6657 -32899
  20. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  21. package/dist/cjs-legacy/matrix.cjs +220 -535
  22. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  23. package/dist/cjs-legacy/queue.cjs +634 -2340
  24. package/dist/cjs-legacy/stack.cjs +124 -530
  25. package/dist/cjs-legacy/trie.cjs +145 -592
  26. package/dist/esm/binary-tree.mjs +2927 -23688
  27. package/dist/esm/graph.mjs +845 -2634
  28. package/dist/esm/hash.mjs +185 -616
  29. package/dist/esm/heap.mjs +266 -818
  30. package/dist/esm/index.mjs +5116 -31358
  31. package/dist/esm/linked-list.mjs +644 -2615
  32. package/dist/esm/matrix.mjs +220 -535
  33. package/dist/esm/priority-queue.mjs +266 -818
  34. package/dist/esm/queue.mjs +637 -2343
  35. package/dist/esm/stack.mjs +124 -530
  36. package/dist/esm/trie.mjs +145 -592
  37. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  38. package/dist/esm-legacy/graph.mjs +847 -2636
  39. package/dist/esm-legacy/hash.mjs +181 -612
  40. package/dist/esm-legacy/heap.mjs +266 -818
  41. package/dist/esm-legacy/index.mjs +6657 -32899
  42. package/dist/esm-legacy/linked-list.mjs +640 -2611
  43. package/dist/esm-legacy/matrix.mjs +220 -535
  44. package/dist/esm-legacy/priority-queue.mjs +266 -818
  45. package/dist/esm-legacy/queue.mjs +634 -2340
  46. package/dist/esm-legacy/stack.mjs +124 -530
  47. package/dist/esm-legacy/trie.mjs +145 -592
  48. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  49. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  50. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  51. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  52. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  53. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  54. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  55. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  56. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  57. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  58. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  59. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  60. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  61. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  62. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  63. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  64. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  65. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  66. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  67. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  68. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  69. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  70. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  71. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  72. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  73. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  74. package/dist/umd/data-structure-typed.js +6580 -32822
  75. package/dist/umd/data-structure-typed.min.js +3 -3
  76. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  77. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  78. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  79. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  80. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  81. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  82. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  83. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/Deque.md +253 -101
  85. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  86. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +244 -114
  87. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  88. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  89. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  90. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  91. package/docs-site-docusaurus/docs/api/classes/Heap.md +119 -64
  92. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +84 -14
  93. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +138 -34
  94. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +149 -41
  95. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  96. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +172 -92
  97. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  98. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  99. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -62
  100. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +120 -70
  101. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -62
  102. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +125 -75
  103. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +119 -64
  104. package/docs-site-docusaurus/docs/api/classes/Queue.md +158 -74
  105. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  106. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  107. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +172 -94
  108. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  109. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  110. package/docs-site-docusaurus/docs/api/classes/Stack.md +112 -50
  111. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  112. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +90 -121
  113. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +298 -107
  114. package/docs-site-docusaurus/docs/api/classes/Trie.md +116 -58
  115. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  116. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  117. package/package.json +45 -46
  118. package/src/common/error.ts +15 -32
  119. package/src/common/index.ts +0 -3
  120. package/src/data-structures/base/iterable-element-base.ts +0 -3
  121. package/src/data-structures/base/linear-base.ts +2 -36
  122. package/src/data-structures/binary-tree/avl-tree.ts +31 -529
  123. package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -572
  124. package/src/data-structures/binary-tree/binary-tree.ts +326 -1311
  125. package/src/data-structures/binary-tree/bst.ts +158 -1082
  126. package/src/data-structures/binary-tree/red-black-tree.ts +451 -1290
  127. package/src/data-structures/binary-tree/segment-tree.ts +73 -351
  128. package/src/data-structures/binary-tree/tree-map.ts +462 -5124
  129. package/src/data-structures/binary-tree/tree-multi-map.ts +302 -4914
  130. package/src/data-structures/binary-tree/tree-multi-set.ts +299 -3983
  131. package/src/data-structures/binary-tree/tree-set.ts +338 -4836
  132. package/src/data-structures/graph/abstract-graph.ts +98 -167
  133. package/src/data-structures/graph/directed-graph.ts +137 -562
  134. package/src/data-structures/graph/map-graph.ts +0 -3
  135. package/src/data-structures/graph/undirected-graph.ts +132 -511
  136. package/src/data-structures/hash/hash-map.ts +154 -582
  137. package/src/data-structures/heap/heap.ts +200 -795
  138. package/src/data-structures/linked-list/doubly-linked-list.ts +121 -865
  139. package/src/data-structures/linked-list/singly-linked-list.ts +122 -794
  140. package/src/data-structures/linked-list/skip-linked-list.ts +211 -918
  141. package/src/data-structures/matrix/matrix.ts +179 -518
  142. package/src/data-structures/matrix/navigator.ts +0 -1
  143. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
  144. package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
  145. package/src/data-structures/priority-queue/priority-queue.ts +1 -2
  146. package/src/data-structures/queue/deque.ts +214 -882
  147. package/src/data-structures/queue/queue.ts +102 -625
  148. package/src/data-structures/stack/stack.ts +76 -505
  149. package/src/data-structures/trie/trie.ts +98 -628
  150. package/src/types/common.ts +0 -10
  151. package/src/types/data-structures/binary-tree/bst.ts +0 -7
  152. package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
  153. package/src/types/data-structures/graph/abstract-graph.ts +0 -2
  154. package/src/types/data-structures/hash/hash-map.ts +0 -3
  155. package/src/types/data-structures/hash/index.ts +0 -1
  156. package/src/types/data-structures/matrix/navigator.ts +0 -2
  157. package/src/types/utils/utils.ts +0 -7
  158. package/src/types/utils/validate-type.ts +0 -7
  159. package/src/utils/number.ts +0 -2
  160. package/src/utils/utils.ts +0 -5
@@ -32,6 +32,7 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
32
32
  protected _tree: E[];
33
33
  protected _treeSize: number;
34
34
  constructor(elements: E[], options: SegmentTreeOptions<E>);
35
+ get size(): number;
35
36
  /**
36
37
  * Create a sum segment tree.
37
38
  * @example
@@ -45,60 +46,18 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
45
46
  static sum(elements: number[]): SegmentTree<number>;
46
47
  /**
47
48
  * Create a min segment tree.
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- * @example
91
- * // Temperature monitoring with range queries
92
- * // Hourly temperatures for a day (24 readings)
93
- * const temps = [18, 17, 16, 15, 16, 18, 21, 24, 27, 29, 31, 32, 33, 32, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17];
94
- * const tree = SegmentTree.sum(temps);
95
- *
96
- * // Average temperature during work hours (9-17)
97
- * const workSum = tree.query(9, 17);
98
- * console.log(workSum / 9); // toBeCloseTo;
99
- *
100
- * // Sum of morning temps (6-11)
101
- * console.log(tree.query(6, 11)); // 164;
49
+ * @example
50
+ * // Temperature monitoring with range queries
51
+ * // Hourly temperatures for a day (24 readings)
52
+ * const temps = [18, 17, 16, 15, 16, 18, 21, 24, 27, 29, 31, 32, 33, 32, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17];
53
+ * const tree = SegmentTree.sum(temps);
54
+ *
55
+ * // Average temperature during work hours (9-17)
56
+ * const workSum = tree.query(9, 17);
57
+ * console.log(workSum / 9); // toBeCloseTo;
58
+ *
59
+ * // Sum of morning temps (6-11)
60
+ * console.log(tree.query(6, 11)); // 164;
102
61
  */
103
62
  static min(elements: number[]): SegmentTree<number>;
104
63
  /**
@@ -113,176 +72,50 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
113
72
  /**
114
73
  * Point update: set element at index to value.
115
74
  * Time: O(log n)
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
- * @example
159
- * // Dynamic range sum with updates
160
- * // Monthly revenue data (in thousands)
161
- * const revenue = [120, 95, 140, 110, 85, 130, 150, 100, 160, 125, 90, 175];
162
- * const tree = SegmentTree.sum(revenue);
163
- *
164
- * // Q1 revenue (Jan-Mar)
165
- * console.log(tree.query(0, 2)); // 355;
166
- *
167
- * // Update March revenue from 140 to 200
168
- * tree.update(2, 200);
169
- *
170
- * // Q1 revenue after update
171
- * console.log(tree.query(0, 2)); // 415;
172
- *
173
- * // H1 revenue (Jan-Jun)
174
- * console.log(tree.query(0, 5)); // 740;
75
+ * @example
76
+ * // Dynamic range sum with updates
77
+ * // Monthly revenue data (in thousands)
78
+ * const revenue = [120, 95, 140, 110, 85, 130, 150, 100, 160, 125, 90, 175];
79
+ * const tree = SegmentTree.sum(revenue);
80
+ *
81
+ * // Q1 revenue (Jan-Mar)
82
+ * console.log(tree.query(0, 2)); // 355;
83
+ *
84
+ * // Update March revenue from 140 to 200
85
+ * tree.update(2, 200);
86
+ *
87
+ * // Q1 revenue after update
88
+ * console.log(tree.query(0, 2)); // 415;
89
+ *
90
+ * // H1 revenue (Jan-Jun)
91
+ * console.log(tree.query(0, 5)); // 740;
175
92
  */
176
93
  update(index: number, value: E): void;
177
94
  /**
178
95
  * Range query: returns merger result over [start, end] (inclusive).
179
96
  * Time: O(log n)
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
-
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
- * @example
223
- * // Range sum query on an array
224
- * const tree = SegmentTree.sum([1, 3, 5, 7, 9, 11]);
225
- *
226
- * // Query sum of range [1, 3] → 3 + 5 + 7 = 15
227
- * console.log(tree.query(1, 3)); // 15;
228
- *
229
- * // Query entire range
230
- * console.log(tree.query(0, 5)); // 36;
231
- *
232
- * // Query single element
233
- * console.log(tree.query(2, 2)); // 5;
97
+ * @example
98
+ * // Range sum query on an array
99
+ * const tree = SegmentTree.sum([1, 3, 5, 7, 9, 11]);
100
+ *
101
+ * // Query sum of range [1, 3] → 3 + 5 + 7 = 15
102
+ * console.log(tree.query(1, 3)); // 15;
103
+ *
104
+ * // Query entire range
105
+ * console.log(tree.query(0, 5)); // 36;
106
+ *
107
+ * // Query single element
108
+ * console.log(tree.query(2, 2)); // 5;
234
109
  */
235
110
  query(start: number, end: number): E;
236
111
  /**
237
112
  * Get element at index.
238
113
  * Time: O(1)
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
-
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
- * @example
282
- * // Point access on segment tree
283
- * const st = SegmentTree.sum([10, 20, 30, 40]);
284
- * console.log(st.get(0)); // 10;
285
- * console.log(st.get(2)); // 30;
114
+ * @example
115
+ * // Point access on segment tree
116
+ * const st = SegmentTree.sum([10, 20, 30, 40]);
117
+ * console.log(st.get(0)); // 10;
118
+ * console.log(st.get(2)); // 30;
286
119
  */
287
120
  get(index: number): E;
288
121
  /**
@@ -290,56 +123,14 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
290
123
  * Returns left-1 if predicate(identity) is false.
291
124
  * Returns n-1 if predicate holds for the entire range [left, n-1].
292
125
  * Time: O(log n)
293
-
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
- * @example
336
- * // Find rightmost position where predicate holds
337
- * // Prefix sums: find the rightmost index where prefix sum < 10
338
- * const st = SegmentTree.sum([3, 1, 4, 1, 5]);
339
- * // maxRight(0, sum => sum < 10) — prefix [3,4,8,9,14]
340
- * // sum < 10 holds through index 3 (prefix=9), fails at 4 (prefix=14)
341
- * const result = st.maxRight(0, sum => sum < 10);
342
- * console.log(result); // 3;
126
+ * @example
127
+ * // Find rightmost position where predicate holds
128
+ * // Prefix sums: find the rightmost index where prefix sum < 10
129
+ * const st = SegmentTree.sum([3, 1, 4, 1, 5]);
130
+ * // maxRight(0, sum => sum < 10) — prefix [3,4,8,9,14]
131
+ * // sum < 10 holds through index 3 (prefix=9), fails at 4 (prefix=14)
132
+ * const result = st.maxRight(0, sum => sum < 10);
133
+ * console.log(result); // 3;
343
134
  */
344
135
  maxRight(left: number, predicate: (segValue: E) => boolean): number;
345
136
  /**
@@ -347,58 +138,15 @@ export declare class SegmentTree<E = number> implements Iterable<E> {
347
138
  * Returns right+1 if predicate(identity) is false.
348
139
  * Returns 0 if predicate holds for the entire range [0, right].
349
140
  * Time: O(log n)
350
-
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
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
-
389
-
390
-
391
-
392
- * @example
393
- * // Find leftmost position where predicate holds
394
- * const st = SegmentTree.sum([3, 1, 4, 1, 5]);
395
- * // minLeft(5, sum => sum < 7) — suffix sums from right
396
- * // From right: [5]=5 < 7, [1,5]=6 < 7, [4,1,5]=10 ≥ 7
397
- * const result = st.minLeft(5, sum => sum < 7);
398
- * console.log(result); // 3;
141
+ * @example
142
+ * // Find leftmost position where predicate holds
143
+ * const st = SegmentTree.sum([3, 1, 4, 1, 5]);
144
+ * // minLeft(5, sum => sum < 7) — suffix sums from right
145
+ * // From right: [5]=5 < 7, [1,5]=6 < 7, [4,1,5]=10 ≥ 7
146
+ * const result = st.minLeft(5, sum => sum < 7);
147
+ * console.log(result); // 3;
399
148
  */
400
149
  minLeft(right: number, predicate: (segValue: E) => boolean): number;
401
- get size(): number;
402
150
  isEmpty(): boolean;
403
151
  clone(): SegmentTree<E>;
404
152
  toArray(): E[];