data-structure-typed 2.6.1 → 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 (116) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/cjs/binary-tree.cjs +2927 -23688
  3. package/dist/cjs/graph.cjs +845 -2634
  4. package/dist/cjs/hash.cjs +185 -616
  5. package/dist/cjs/heap.cjs +266 -818
  6. package/dist/cjs/index.cjs +5116 -31358
  7. package/dist/cjs/linked-list.cjs +644 -2615
  8. package/dist/cjs/matrix.cjs +220 -535
  9. package/dist/cjs/priority-queue.cjs +266 -818
  10. package/dist/cjs/queue.cjs +637 -2343
  11. package/dist/cjs/stack.cjs +124 -530
  12. package/dist/cjs/trie.cjs +145 -592
  13. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  14. package/dist/cjs-legacy/graph.cjs +847 -2636
  15. package/dist/cjs-legacy/hash.cjs +181 -612
  16. package/dist/cjs-legacy/heap.cjs +266 -818
  17. package/dist/cjs-legacy/index.cjs +6657 -32899
  18. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  19. package/dist/cjs-legacy/matrix.cjs +220 -535
  20. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  21. package/dist/cjs-legacy/queue.cjs +634 -2340
  22. package/dist/cjs-legacy/stack.cjs +124 -530
  23. package/dist/cjs-legacy/trie.cjs +145 -592
  24. package/dist/esm/binary-tree.mjs +2927 -23688
  25. package/dist/esm/graph.mjs +845 -2634
  26. package/dist/esm/hash.mjs +185 -616
  27. package/dist/esm/heap.mjs +266 -818
  28. package/dist/esm/index.mjs +5116 -31358
  29. package/dist/esm/linked-list.mjs +644 -2615
  30. package/dist/esm/matrix.mjs +220 -535
  31. package/dist/esm/priority-queue.mjs +266 -818
  32. package/dist/esm/queue.mjs +637 -2343
  33. package/dist/esm/stack.mjs +124 -530
  34. package/dist/esm/trie.mjs +145 -592
  35. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  36. package/dist/esm-legacy/graph.mjs +847 -2636
  37. package/dist/esm-legacy/hash.mjs +181 -612
  38. package/dist/esm-legacy/heap.mjs +266 -818
  39. package/dist/esm-legacy/index.mjs +6657 -32899
  40. package/dist/esm-legacy/linked-list.mjs +640 -2611
  41. package/dist/esm-legacy/matrix.mjs +220 -535
  42. package/dist/esm-legacy/priority-queue.mjs +266 -818
  43. package/dist/esm-legacy/queue.mjs +634 -2340
  44. package/dist/esm-legacy/stack.mjs +124 -530
  45. package/dist/esm-legacy/trie.mjs +145 -592
  46. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  47. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  48. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  49. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  50. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  51. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  52. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  53. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  54. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  55. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  56. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  57. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  58. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  59. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  60. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  61. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  62. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  63. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  64. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  65. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  66. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  67. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  68. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  69. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  70. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  71. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  72. package/dist/umd/data-structure-typed.js +6580 -32822
  73. package/dist/umd/data-structure-typed.min.js +3 -3
  74. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  75. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  76. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  77. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  78. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  79. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  80. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  81. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  82. package/docs-site-docusaurus/docs/api/classes/Deque.md +72 -104
  83. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  84. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +67 -101
  85. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  86. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  87. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  88. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  89. package/docs-site-docusaurus/docs/api/classes/Heap.md +40 -68
  90. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +17 -17
  91. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +38 -38
  92. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +45 -45
  93. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  94. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +68 -96
  95. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  96. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  97. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +38 -66
  98. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +41 -74
  99. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +38 -66
  100. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +46 -79
  101. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +40 -68
  102. package/docs-site-docusaurus/docs/api/classes/Queue.md +54 -78
  103. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  104. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  105. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +68 -98
  106. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  107. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  108. package/docs-site-docusaurus/docs/api/classes/Stack.md +33 -53
  109. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  110. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +57 -124
  111. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +45 -116
  112. package/docs-site-docusaurus/docs/api/classes/Trie.md +37 -61
  113. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  114. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  115. package/package.json +1 -1
  116. package/src/data-structures/binary-tree/tree-multi-set.ts +15 -11
@@ -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[];