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
@@ -410,6 +410,35 @@ var _IterableElementBase = class _IterableElementBase {
410
410
  for (const ele of this) if (ele === element) return true;
411
411
  return false;
412
412
  }
413
+ /**
414
+ * Check whether a value exists (Array-compatible alias for `has`).
415
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
416
+ * @param element - Element to search for (uses `===`).
417
+ * @returns `true` if found.
418
+ */
419
+ includes(element) {
420
+ return this.has(element);
421
+ }
422
+ /**
423
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
424
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
425
+ */
426
+ *entries() {
427
+ let index = 0;
428
+ for (const value of this) {
429
+ yield [index++, value];
430
+ }
431
+ }
432
+ /**
433
+ * Return an iterator of numeric indices (Array-compatible).
434
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
435
+ */
436
+ *keys() {
437
+ let index = 0;
438
+ for (const _ of this) {
439
+ yield index++;
440
+ }
441
+ }
413
442
  /**
414
443
  * Reduces all elements to a single accumulated value.
415
444
  *
@@ -671,6 +700,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
671
700
  }
672
701
  return this;
673
702
  }
703
+ /**
704
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
705
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
706
+ * @returns A new reversed instance.
707
+ */
708
+ toReversed() {
709
+ const cloned = this.clone();
710
+ cloned.reverse();
711
+ return cloned;
712
+ }
674
713
  };
675
714
  __name(_LinearBase, "LinearBase");
676
715
  var LinearBase = _LinearBase;
@@ -742,6 +781,13 @@ var _Heap = class _Heap extends IterableElementBase {
742
781
 
743
782
 
744
783
 
784
+
785
+
786
+
787
+
788
+
789
+
790
+
745
791
 
746
792
 
747
793
 
@@ -799,7 +845,7 @@ var _Heap = class _Heap extends IterableElementBase {
799
845
  }
800
846
  /**
801
847
  * Insert an element.
802
- * @remarks Time O(1) amortized, Space O(1)
848
+ * @remarks Time O(log N) amortized, Space O(1)
803
849
  * @param element - Element to insert.
804
850
  * @returns True.
805
851
 
@@ -829,6 +875,13 @@ var _Heap = class _Heap extends IterableElementBase {
829
875
 
830
876
 
831
877
 
878
+
879
+
880
+
881
+
882
+
883
+
884
+
832
885
 
833
886
 
834
887
 
@@ -886,6 +939,13 @@ var _Heap = class _Heap extends IterableElementBase {
886
939
 
887
940
 
888
941
 
942
+
943
+
944
+
945
+
946
+
947
+
948
+
889
949
 
890
950
 
891
951
 
@@ -950,6 +1010,40 @@ var _Heap = class _Heap extends IterableElementBase {
950
1010
 
951
1011
 
952
1012
 
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+ * @example
1020
+ * // Heap with custom comparator (MaxHeap behavior)
1021
+ * interface Task {
1022
+ * id: number;
1023
+ * priority: number;
1024
+ * name: string;
1025
+ * }
1026
+ *
1027
+ * // Custom comparator for max heap behavior (higher priority first)
1028
+ * const tasks: Task[] = [
1029
+ * { id: 1, priority: 5, name: 'Email' },
1030
+ * { id: 2, priority: 3, name: 'Chat' },
1031
+ * { id: 3, priority: 8, name: 'Alert' }
1032
+ * ];
1033
+ *
1034
+ * const maxHeap = new Heap(tasks, {
1035
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1036
+ * });
1037
+ *
1038
+ * console.log(maxHeap.size); // 3;
1039
+ *
1040
+ * // Peek returns highest priority task
1041
+ * const topTask = maxHeap.peek();
1042
+ * console.log(topTask?.priority); // 8;
1043
+ * console.log(topTask?.name); // 'Alert';
1044
+ */
1045
+ /**
1046
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
953
1047
 
954
1048
 
955
1049
 
@@ -980,6 +1074,14 @@ var _Heap = class _Heap extends IterableElementBase {
980
1074
  * console.log(topTask?.name); // 'Alert';
981
1075
  */
982
1076
  poll() {
1077
+ return this.pop();
1078
+ }
1079
+ /**
1080
+ * Remove and return the top element (min or max depending on comparator).
1081
+ * @remarks Time O(log N) amortized, Space O(1)
1082
+ * @returns The removed top element, or undefined if empty.
1083
+ */
1084
+ pop() {
983
1085
  if (this.elements.length === 0) return;
984
1086
  const value = this.elements[0];
985
1087
  const last = this.elements.pop();
@@ -1020,6 +1122,13 @@ var _Heap = class _Heap extends IterableElementBase {
1020
1122
 
1021
1123
 
1022
1124
 
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1023
1132
 
1024
1133
 
1025
1134
 
@@ -1120,6 +1229,13 @@ var _Heap = class _Heap extends IterableElementBase {
1120
1229
 
1121
1230
 
1122
1231
 
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1123
1239
 
1124
1240
 
1125
1241
 
@@ -1167,6 +1283,13 @@ var _Heap = class _Heap extends IterableElementBase {
1167
1283
 
1168
1284
 
1169
1285
 
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1170
1293
 
1171
1294
 
1172
1295
 
@@ -1184,16 +1307,6 @@ var _Heap = class _Heap extends IterableElementBase {
1184
1307
  clear() {
1185
1308
  this._elements = [];
1186
1309
  }
1187
- /**
1188
- * Replace the backing array and rebuild the heap.
1189
- * @remarks Time O(N), Space O(N)
1190
- * @param elements - Iterable used to refill the heap.
1191
- * @returns Array of per-node results from fixing steps.
1192
- */
1193
- refill(elements) {
1194
- this._elements = Array.from(elements);
1195
- return this.fix();
1196
- }
1197
1310
  /**
1198
1311
  * Check if an equal element exists in the heap.
1199
1312
  * @remarks Time O(N), Space O(1)
@@ -1217,6 +1330,13 @@ var _Heap = class _Heap extends IterableElementBase {
1217
1330
 
1218
1331
 
1219
1332
 
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1220
1340
 
1221
1341
 
1222
1342
 
@@ -1264,6 +1384,13 @@ var _Heap = class _Heap extends IterableElementBase {
1264
1384
 
1265
1385
 
1266
1386
 
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1267
1394
 
1268
1395
 
1269
1396
 
@@ -1288,7 +1415,7 @@ var _Heap = class _Heap extends IterableElementBase {
1288
1415
  }
1289
1416
  if (index < 0) return false;
1290
1417
  if (index === 0) {
1291
- this.poll();
1418
+ this.pop();
1292
1419
  } else if (index === this.elements.length - 1) {
1293
1420
  this.elements.pop();
1294
1421
  } else {
@@ -1298,13 +1425,19 @@ var _Heap = class _Heap extends IterableElementBase {
1298
1425
  }
1299
1426
  return true;
1300
1427
  }
1428
+ /**
1429
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1430
+ */
1431
+ deleteBy(predicate) {
1432
+ return this.deleteWhere(predicate);
1433
+ }
1301
1434
  /**
1302
1435
  * Delete the first element that matches a predicate.
1303
1436
  * @remarks Time O(N), Space O(1)
1304
1437
  * @param predicate - Function (element, index, heap) → boolean.
1305
1438
  * @returns True if an element was removed.
1306
1439
  */
1307
- deleteBy(predicate) {
1440
+ deleteWhere(predicate) {
1308
1441
  let idx = -1;
1309
1442
  for (let i = 0; i < this.elements.length; i++) {
1310
1443
  if (predicate(this.elements[i], i, this)) {
@@ -1314,7 +1447,7 @@ var _Heap = class _Heap extends IterableElementBase {
1314
1447
  }
1315
1448
  if (idx < 0) return false;
1316
1449
  if (idx === 0) {
1317
- this.poll();
1450
+ this.pop();
1318
1451
  } else if (idx === this.elements.length - 1) {
1319
1452
  this.elements.pop();
1320
1453
  } else {
@@ -1357,6 +1490,13 @@ var _Heap = class _Heap extends IterableElementBase {
1357
1490
 
1358
1491
 
1359
1492
 
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1360
1500
 
1361
1501
 
1362
1502
 
@@ -1437,6 +1577,13 @@ var _Heap = class _Heap extends IterableElementBase {
1437
1577
 
1438
1578
 
1439
1579
 
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1440
1587
 
1441
1588
 
1442
1589
 
@@ -1490,6 +1637,13 @@ var _Heap = class _Heap extends IterableElementBase {
1490
1637
 
1491
1638
 
1492
1639
 
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1493
1647
 
1494
1648
 
1495
1649
 
@@ -1542,6 +1696,13 @@ var _Heap = class _Heap extends IterableElementBase {
1542
1696
 
1543
1697
 
1544
1698
 
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1545
1706
 
1546
1707
 
1547
1708
 
@@ -1601,6 +1762,13 @@ var _Heap = class _Heap extends IterableElementBase {
1601
1762
 
1602
1763
 
1603
1764
 
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1604
1772
 
1605
1773
 
1606
1774
 
@@ -1804,6 +1972,13 @@ var _Queue = class _Queue extends LinearBase {
1804
1972
 
1805
1973
 
1806
1974
 
1975
+
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1807
1982
 
1808
1983
 
1809
1984
 
@@ -1854,6 +2029,13 @@ var _Queue = class _Queue extends LinearBase {
1854
2029
 
1855
2030
 
1856
2031
 
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
1857
2039
 
1858
2040
 
1859
2041
 
@@ -1871,6 +2053,14 @@ var _Queue = class _Queue extends LinearBase {
1871
2053
  get first() {
1872
2054
  return this.length > 0 ? this.elements[this._offset] : void 0;
1873
2055
  }
2056
+ /**
2057
+ * Peek at the front element without removing it (alias for `first`).
2058
+ * @remarks Time O(1), Space O(1)
2059
+ * @returns Front element or undefined.
2060
+ */
2061
+ peek() {
2062
+ return this.first;
2063
+ }
1874
2064
  /**
1875
2065
  * Get the last element (back) without removing it.
1876
2066
  * @remarks Time O(1), Space O(1)
@@ -1920,6 +2110,13 @@ var _Queue = class _Queue extends LinearBase {
1920
2110
 
1921
2111
 
1922
2112
 
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
1923
2120
 
1924
2121
 
1925
2122
 
@@ -1982,6 +2179,13 @@ var _Queue = class _Queue extends LinearBase {
1982
2179
 
1983
2180
 
1984
2181
 
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
1985
2189
 
1986
2190
 
1987
2191
 
@@ -2051,6 +2255,13 @@ var _Queue = class _Queue extends LinearBase {
2051
2255
 
2052
2256
 
2053
2257
 
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2054
2265
 
2055
2266
 
2056
2267
 
@@ -2110,6 +2321,13 @@ var _Queue = class _Queue extends LinearBase {
2110
2321
 
2111
2322
 
2112
2323
 
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2113
2331
 
2114
2332
 
2115
2333
 
@@ -2162,6 +2380,13 @@ var _Queue = class _Queue extends LinearBase {
2162
2380
 
2163
2381
 
2164
2382
 
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+
2165
2390
 
2166
2391
 
2167
2392
 
@@ -2216,6 +2441,21 @@ var _Queue = class _Queue extends LinearBase {
2216
2441
  this._elements[this._offset + index] = newElement;
2217
2442
  return true;
2218
2443
  }
2444
+ /**
2445
+ * Delete the first element that satisfies a predicate.
2446
+ * @remarks Time O(N), Space O(N)
2447
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2448
+ * @returns True if a match was removed.
2449
+ */
2450
+ deleteWhere(predicate) {
2451
+ for (let i = 0; i < this.length; i++) {
2452
+ if (predicate(this._elements[this._offset + i], i, this)) {
2453
+ this.deleteAt(i);
2454
+ return true;
2455
+ }
2456
+ }
2457
+ return false;
2458
+ }
2219
2459
  /**
2220
2460
  * Reverse the queue in-place by compacting then reversing.
2221
2461
  * @remarks Time O(N), Space O(N)
@@ -2255,6 +2495,13 @@ var _Queue = class _Queue extends LinearBase {
2255
2495
 
2256
2496
 
2257
2497
 
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2258
2505
 
2259
2506
 
2260
2507
 
@@ -2301,6 +2548,13 @@ var _Queue = class _Queue extends LinearBase {
2301
2548
 
2302
2549
 
2303
2550
 
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2304
2558
 
2305
2559
 
2306
2560
 
@@ -2370,6 +2624,13 @@ var _Queue = class _Queue extends LinearBase {
2370
2624
 
2371
2625
 
2372
2626
 
2627
+
2628
+
2629
+
2630
+
2631
+
2632
+
2633
+
2373
2634
 
2374
2635
 
2375
2636
 
@@ -2423,6 +2684,13 @@ var _Queue = class _Queue extends LinearBase {
2423
2684
 
2424
2685
 
2425
2686
 
2687
+
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+
2426
2694
 
2427
2695
 
2428
2696
 
@@ -2480,6 +2748,13 @@ var _Queue = class _Queue extends LinearBase {
2480
2748
 
2481
2749
 
2482
2750
 
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2483
2758
 
2484
2759
 
2485
2760
 
@@ -3611,6 +3886,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3611
3886
 
3612
3887
 
3613
3888
 
3889
+
3890
+
3891
+
3892
+
3893
+
3894
+
3895
+
3614
3896
 
3615
3897
 
3616
3898
 
@@ -3696,6 +3978,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3696
3978
 
3697
3979
 
3698
3980
 
3981
+
3982
+
3983
+
3984
+
3985
+
3986
+
3987
+
3699
3988
 
3700
3989
 
3701
3990
 
@@ -3780,6 +4069,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3780
4069
 
3781
4070
 
3782
4071
 
4072
+
4073
+
4074
+
4075
+
4076
+
4077
+
4078
+
3783
4079
 
3784
4080
 
3785
4081
 
@@ -3879,6 +4175,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3879
4175
 
3880
4176
 
3881
4177
 
4178
+
4179
+
4180
+
4181
+
4182
+
4183
+
4184
+
3882
4185
 
3883
4186
 
3884
4187
 
@@ -3933,6 +4236,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3933
4236
 
3934
4237
 
3935
4238
 
4239
+
4240
+
4241
+
4242
+
4243
+
4244
+
4245
+
3936
4246
 
3937
4247
 
3938
4248
 
@@ -4057,6 +4367,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4057
4367
 
4058
4368
 
4059
4369
 
4370
+
4371
+
4372
+
4373
+
4374
+
4375
+
4376
+
4060
4377
 
4061
4378
 
4062
4379
 
@@ -4203,6 +4520,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4203
4520
 
4204
4521
 
4205
4522
 
4523
+
4524
+
4525
+
4526
+
4527
+
4528
+
4529
+
4206
4530
 
4207
4531
 
4208
4532
 
@@ -4271,6 +4595,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4271
4595
 
4272
4596
 
4273
4597
 
4598
+
4599
+
4600
+
4601
+
4602
+
4603
+
4604
+
4274
4605
 
4275
4606
 
4276
4607
 
@@ -4321,6 +4652,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4321
4652
 
4322
4653
 
4323
4654
 
4655
+
4656
+
4657
+
4658
+
4659
+
4660
+
4661
+
4324
4662
 
4325
4663
 
4326
4664