undirected-graph-typed 2.5.2 → 2.6.0

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 (63) hide show
  1. package/dist/cjs/index.cjs +352 -14
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +352 -14
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +352 -14
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +352 -14
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
  10. package/dist/types/data-structures/base/linear-base.d.ts +6 -0
  11. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
  12. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
  13. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
  15. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
  16. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
  17. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
  18. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
  19. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
  20. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
  21. package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
  22. package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
  23. package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
  24. package/dist/types/data-structures/heap/heap.d.ts +140 -12
  25. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
  26. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
  27. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
  28. package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
  29. package/dist/types/data-structures/queue/deque.d.ts +171 -0
  30. package/dist/types/data-structures/queue/queue.d.ts +97 -0
  31. package/dist/types/data-structures/stack/stack.d.ts +72 -2
  32. package/dist/types/data-structures/trie/trie.d.ts +84 -0
  33. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  34. package/dist/umd/undirected-graph-typed.js +352 -14
  35. package/dist/umd/undirected-graph-typed.js.map +1 -1
  36. package/dist/umd/undirected-graph-typed.min.js +1 -1
  37. package/dist/umd/undirected-graph-typed.min.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/data-structures/base/iterable-element-base.ts +32 -0
  40. package/src/data-structures/base/linear-base.ts +11 -0
  41. package/src/data-structures/binary-tree/avl-tree.ts +88 -5
  42. package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
  43. package/src/data-structures/binary-tree/binary-tree.ts +242 -81
  44. package/src/data-structures/binary-tree/bst.ts +173 -7
  45. package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
  46. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  47. package/src/data-structures/binary-tree/tree-map.ts +948 -36
  48. package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
  49. package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
  50. package/src/data-structures/binary-tree/tree-set.ts +1260 -251
  51. package/src/data-structures/graph/directed-graph.ts +71 -1
  52. package/src/data-structures/graph/undirected-graph.ts +64 -1
  53. package/src/data-structures/hash/hash-map.ts +100 -12
  54. package/src/data-structures/heap/heap.ts +149 -19
  55. package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
  56. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  57. package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
  58. package/src/data-structures/matrix/matrix.ts +56 -0
  59. package/src/data-structures/queue/deque.ts +187 -0
  60. package/src/data-structures/queue/queue.ts +109 -0
  61. package/src/data-structures/stack/stack.ts +75 -5
  62. package/src/data-structures/trie/trie.ts +84 -0
  63. package/src/interfaces/binary-tree.ts +1 -9
@@ -408,6 +408,35 @@ var _IterableElementBase = class _IterableElementBase {
408
408
  for (const ele of this) if (ele === element) return true;
409
409
  return false;
410
410
  }
411
+ /**
412
+ * Check whether a value exists (Array-compatible alias for `has`).
413
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
414
+ * @param element - Element to search for (uses `===`).
415
+ * @returns `true` if found.
416
+ */
417
+ includes(element) {
418
+ return this.has(element);
419
+ }
420
+ /**
421
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
422
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
423
+ */
424
+ *entries() {
425
+ let index = 0;
426
+ for (const value of this) {
427
+ yield [index++, value];
428
+ }
429
+ }
430
+ /**
431
+ * Return an iterator of numeric indices (Array-compatible).
432
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
433
+ */
434
+ *keys() {
435
+ let index = 0;
436
+ for (const _ of this) {
437
+ yield index++;
438
+ }
439
+ }
411
440
  /**
412
441
  * Reduces all elements to a single accumulated value.
413
442
  *
@@ -669,6 +698,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
669
698
  }
670
699
  return this;
671
700
  }
701
+ /**
702
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
703
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
704
+ * @returns A new reversed instance.
705
+ */
706
+ toReversed() {
707
+ const cloned = this.clone();
708
+ cloned.reverse();
709
+ return cloned;
710
+ }
672
711
  };
673
712
  __name(_LinearBase, "LinearBase");
674
713
  var LinearBase = _LinearBase;
@@ -740,6 +779,13 @@ var _Heap = class _Heap extends IterableElementBase {
740
779
 
741
780
 
742
781
 
782
+
783
+
784
+
785
+
786
+
787
+
788
+
743
789
 
744
790
 
745
791
 
@@ -797,7 +843,7 @@ var _Heap = class _Heap extends IterableElementBase {
797
843
  }
798
844
  /**
799
845
  * Insert an element.
800
- * @remarks Time O(1) amortized, Space O(1)
846
+ * @remarks Time O(log N) amortized, Space O(1)
801
847
  * @param element - Element to insert.
802
848
  * @returns True.
803
849
 
@@ -827,6 +873,13 @@ var _Heap = class _Heap extends IterableElementBase {
827
873
 
828
874
 
829
875
 
876
+
877
+
878
+
879
+
880
+
881
+
882
+
830
883
 
831
884
 
832
885
 
@@ -884,6 +937,13 @@ var _Heap = class _Heap extends IterableElementBase {
884
937
 
885
938
 
886
939
 
940
+
941
+
942
+
943
+
944
+
945
+
946
+
887
947
 
888
948
 
889
949
 
@@ -948,6 +1008,40 @@ var _Heap = class _Heap extends IterableElementBase {
948
1008
 
949
1009
 
950
1010
 
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+ * @example
1018
+ * // Heap with custom comparator (MaxHeap behavior)
1019
+ * interface Task {
1020
+ * id: number;
1021
+ * priority: number;
1022
+ * name: string;
1023
+ * }
1024
+ *
1025
+ * // Custom comparator for max heap behavior (higher priority first)
1026
+ * const tasks: Task[] = [
1027
+ * { id: 1, priority: 5, name: 'Email' },
1028
+ * { id: 2, priority: 3, name: 'Chat' },
1029
+ * { id: 3, priority: 8, name: 'Alert' }
1030
+ * ];
1031
+ *
1032
+ * const maxHeap = new Heap(tasks, {
1033
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1034
+ * });
1035
+ *
1036
+ * console.log(maxHeap.size); // 3;
1037
+ *
1038
+ * // Peek returns highest priority task
1039
+ * const topTask = maxHeap.peek();
1040
+ * console.log(topTask?.priority); // 8;
1041
+ * console.log(topTask?.name); // 'Alert';
1042
+ */
1043
+ /**
1044
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
951
1045
 
952
1046
 
953
1047
 
@@ -978,6 +1072,14 @@ var _Heap = class _Heap extends IterableElementBase {
978
1072
  * console.log(topTask?.name); // 'Alert';
979
1073
  */
980
1074
  poll() {
1075
+ return this.pop();
1076
+ }
1077
+ /**
1078
+ * Remove and return the top element (min or max depending on comparator).
1079
+ * @remarks Time O(log N) amortized, Space O(1)
1080
+ * @returns The removed top element, or undefined if empty.
1081
+ */
1082
+ pop() {
981
1083
  if (this.elements.length === 0) return;
982
1084
  const value = this.elements[0];
983
1085
  const last = this.elements.pop();
@@ -1018,6 +1120,13 @@ var _Heap = class _Heap extends IterableElementBase {
1018
1120
 
1019
1121
 
1020
1122
 
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1021
1130
 
1022
1131
 
1023
1132
 
@@ -1118,6 +1227,13 @@ var _Heap = class _Heap extends IterableElementBase {
1118
1227
 
1119
1228
 
1120
1229
 
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1121
1237
 
1122
1238
 
1123
1239
 
@@ -1165,6 +1281,13 @@ var _Heap = class _Heap extends IterableElementBase {
1165
1281
 
1166
1282
 
1167
1283
 
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1168
1291
 
1169
1292
 
1170
1293
 
@@ -1182,16 +1305,6 @@ var _Heap = class _Heap extends IterableElementBase {
1182
1305
  clear() {
1183
1306
  this._elements = [];
1184
1307
  }
1185
- /**
1186
- * Replace the backing array and rebuild the heap.
1187
- * @remarks Time O(N), Space O(N)
1188
- * @param elements - Iterable used to refill the heap.
1189
- * @returns Array of per-node results from fixing steps.
1190
- */
1191
- refill(elements) {
1192
- this._elements = Array.from(elements);
1193
- return this.fix();
1194
- }
1195
1308
  /**
1196
1309
  * Check if an equal element exists in the heap.
1197
1310
  * @remarks Time O(N), Space O(1)
@@ -1215,6 +1328,13 @@ var _Heap = class _Heap extends IterableElementBase {
1215
1328
 
1216
1329
 
1217
1330
 
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1218
1338
 
1219
1339
 
1220
1340
 
@@ -1262,6 +1382,13 @@ var _Heap = class _Heap extends IterableElementBase {
1262
1382
 
1263
1383
 
1264
1384
 
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+
1265
1392
 
1266
1393
 
1267
1394
 
@@ -1286,7 +1413,7 @@ var _Heap = class _Heap extends IterableElementBase {
1286
1413
  }
1287
1414
  if (index < 0) return false;
1288
1415
  if (index === 0) {
1289
- this.poll();
1416
+ this.pop();
1290
1417
  } else if (index === this.elements.length - 1) {
1291
1418
  this.elements.pop();
1292
1419
  } else {
@@ -1296,13 +1423,19 @@ var _Heap = class _Heap extends IterableElementBase {
1296
1423
  }
1297
1424
  return true;
1298
1425
  }
1426
+ /**
1427
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1428
+ */
1429
+ deleteBy(predicate) {
1430
+ return this.deleteWhere(predicate);
1431
+ }
1299
1432
  /**
1300
1433
  * Delete the first element that matches a predicate.
1301
1434
  * @remarks Time O(N), Space O(1)
1302
1435
  * @param predicate - Function (element, index, heap) → boolean.
1303
1436
  * @returns True if an element was removed.
1304
1437
  */
1305
- deleteBy(predicate) {
1438
+ deleteWhere(predicate) {
1306
1439
  let idx = -1;
1307
1440
  for (let i = 0; i < this.elements.length; i++) {
1308
1441
  if (predicate(this.elements[i], i, this)) {
@@ -1312,7 +1445,7 @@ var _Heap = class _Heap extends IterableElementBase {
1312
1445
  }
1313
1446
  if (idx < 0) return false;
1314
1447
  if (idx === 0) {
1315
- this.poll();
1448
+ this.pop();
1316
1449
  } else if (idx === this.elements.length - 1) {
1317
1450
  this.elements.pop();
1318
1451
  } else {
@@ -1355,6 +1488,13 @@ var _Heap = class _Heap extends IterableElementBase {
1355
1488
 
1356
1489
 
1357
1490
 
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1358
1498
 
1359
1499
 
1360
1500
 
@@ -1435,6 +1575,13 @@ var _Heap = class _Heap extends IterableElementBase {
1435
1575
 
1436
1576
 
1437
1577
 
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1438
1585
 
1439
1586
 
1440
1587
 
@@ -1488,6 +1635,13 @@ var _Heap = class _Heap extends IterableElementBase {
1488
1635
 
1489
1636
 
1490
1637
 
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1491
1645
 
1492
1646
 
1493
1647
 
@@ -1540,6 +1694,13 @@ var _Heap = class _Heap extends IterableElementBase {
1540
1694
 
1541
1695
 
1542
1696
 
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1543
1704
 
1544
1705
 
1545
1706
 
@@ -1599,6 +1760,13 @@ var _Heap = class _Heap extends IterableElementBase {
1599
1760
 
1600
1761
 
1601
1762
 
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1602
1770
 
1603
1771
 
1604
1772
 
@@ -1802,6 +1970,13 @@ var _Queue = class _Queue extends LinearBase {
1802
1970
 
1803
1971
 
1804
1972
 
1973
+
1974
+
1975
+
1976
+
1977
+
1978
+
1979
+
1805
1980
 
1806
1981
 
1807
1982
 
@@ -1852,6 +2027,13 @@ var _Queue = class _Queue extends LinearBase {
1852
2027
 
1853
2028
 
1854
2029
 
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
1855
2037
 
1856
2038
 
1857
2039
 
@@ -1869,6 +2051,14 @@ var _Queue = class _Queue extends LinearBase {
1869
2051
  get first() {
1870
2052
  return this.length > 0 ? this.elements[this._offset] : void 0;
1871
2053
  }
2054
+ /**
2055
+ * Peek at the front element without removing it (alias for `first`).
2056
+ * @remarks Time O(1), Space O(1)
2057
+ * @returns Front element or undefined.
2058
+ */
2059
+ peek() {
2060
+ return this.first;
2061
+ }
1872
2062
  /**
1873
2063
  * Get the last element (back) without removing it.
1874
2064
  * @remarks Time O(1), Space O(1)
@@ -1918,6 +2108,13 @@ var _Queue = class _Queue extends LinearBase {
1918
2108
 
1919
2109
 
1920
2110
 
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
1921
2118
 
1922
2119
 
1923
2120
 
@@ -1980,6 +2177,13 @@ var _Queue = class _Queue extends LinearBase {
1980
2177
 
1981
2178
 
1982
2179
 
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
1983
2187
 
1984
2188
 
1985
2189
 
@@ -2049,6 +2253,13 @@ var _Queue = class _Queue extends LinearBase {
2049
2253
 
2050
2254
 
2051
2255
 
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2052
2263
 
2053
2264
 
2054
2265
 
@@ -2108,6 +2319,13 @@ var _Queue = class _Queue extends LinearBase {
2108
2319
 
2109
2320
 
2110
2321
 
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2111
2329
 
2112
2330
 
2113
2331
 
@@ -2160,6 +2378,13 @@ var _Queue = class _Queue extends LinearBase {
2160
2378
 
2161
2379
 
2162
2380
 
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2163
2388
 
2164
2389
 
2165
2390
 
@@ -2214,6 +2439,21 @@ var _Queue = class _Queue extends LinearBase {
2214
2439
  this._elements[this._offset + index] = newElement;
2215
2440
  return true;
2216
2441
  }
2442
+ /**
2443
+ * Delete the first element that satisfies a predicate.
2444
+ * @remarks Time O(N), Space O(N)
2445
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2446
+ * @returns True if a match was removed.
2447
+ */
2448
+ deleteWhere(predicate) {
2449
+ for (let i = 0; i < this.length; i++) {
2450
+ if (predicate(this._elements[this._offset + i], i, this)) {
2451
+ this.deleteAt(i);
2452
+ return true;
2453
+ }
2454
+ }
2455
+ return false;
2456
+ }
2217
2457
  /**
2218
2458
  * Reverse the queue in-place by compacting then reversing.
2219
2459
  * @remarks Time O(N), Space O(N)
@@ -2253,6 +2493,13 @@ var _Queue = class _Queue extends LinearBase {
2253
2493
 
2254
2494
 
2255
2495
 
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2256
2503
 
2257
2504
 
2258
2505
 
@@ -2299,6 +2546,13 @@ var _Queue = class _Queue extends LinearBase {
2299
2546
 
2300
2547
 
2301
2548
 
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2302
2556
 
2303
2557
 
2304
2558
 
@@ -2368,6 +2622,13 @@ var _Queue = class _Queue extends LinearBase {
2368
2622
 
2369
2623
 
2370
2624
 
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+
2371
2632
 
2372
2633
 
2373
2634
 
@@ -2421,6 +2682,13 @@ var _Queue = class _Queue extends LinearBase {
2421
2682
 
2422
2683
 
2423
2684
 
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2424
2692
 
2425
2693
 
2426
2694
 
@@ -2478,6 +2746,13 @@ var _Queue = class _Queue extends LinearBase {
2478
2746
 
2479
2747
 
2480
2748
 
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2481
2756
 
2482
2757
 
2483
2758
 
@@ -3609,6 +3884,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3609
3884
 
3610
3885
 
3611
3886
 
3887
+
3888
+
3889
+
3890
+
3891
+
3892
+
3893
+
3612
3894
 
3613
3895
 
3614
3896
 
@@ -3694,6 +3976,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3694
3976
 
3695
3977
 
3696
3978
 
3979
+
3980
+
3981
+
3982
+
3983
+
3984
+
3985
+
3697
3986
 
3698
3987
 
3699
3988
 
@@ -3778,6 +4067,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3778
4067
 
3779
4068
 
3780
4069
 
4070
+
4071
+
4072
+
4073
+
4074
+
4075
+
4076
+
3781
4077
 
3782
4078
 
3783
4079
 
@@ -3877,6 +4173,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3877
4173
 
3878
4174
 
3879
4175
 
4176
+
4177
+
4178
+
4179
+
4180
+
4181
+
4182
+
3880
4183
 
3881
4184
 
3882
4185
 
@@ -3931,6 +4234,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3931
4234
 
3932
4235
 
3933
4236
 
4237
+
4238
+
4239
+
4240
+
4241
+
4242
+
4243
+
3934
4244
 
3935
4245
 
3936
4246
 
@@ -4055,6 +4365,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4055
4365
 
4056
4366
 
4057
4367
 
4368
+
4369
+
4370
+
4371
+
4372
+
4373
+
4374
+
4058
4375
 
4059
4376
 
4060
4377
 
@@ -4201,6 +4518,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4201
4518
 
4202
4519
 
4203
4520
 
4521
+
4522
+
4523
+
4524
+
4525
+
4526
+
4527
+
4204
4528
 
4205
4529
 
4206
4530
 
@@ -4269,6 +4593,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4269
4593
 
4270
4594
 
4271
4595
 
4596
+
4597
+
4598
+
4599
+
4600
+
4601
+
4602
+
4272
4603
 
4273
4604
 
4274
4605
 
@@ -4319,6 +4650,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4319
4650
 
4320
4651
 
4321
4652
 
4653
+
4654
+
4655
+
4656
+
4657
+
4658
+
4659
+
4322
4660
 
4323
4661
 
4324
4662