directed-graph-typed 2.5.2 → 2.5.3

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 (59) hide show
  1. package/dist/cjs/index.cjs +212 -14
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +212 -14
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +212 -14
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +212 -14
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +50 -2
  10. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +56 -0
  11. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +116 -15
  12. package/dist/types/data-structures/binary-tree/bst.d.ts +99 -3
  13. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +79 -8
  14. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +24 -0
  15. package/dist/types/data-structures/binary-tree/tree-map.d.ts +520 -1
  16. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +489 -1
  17. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +393 -1
  18. package/dist/types/data-structures/binary-tree/tree-set.d.ts +500 -1
  19. package/dist/types/data-structures/graph/directed-graph.d.ts +40 -0
  20. package/dist/types/data-structures/graph/undirected-graph.d.ts +36 -0
  21. package/dist/types/data-structures/hash/hash-map.d.ts +51 -6
  22. package/dist/types/data-structures/heap/heap.d.ts +98 -12
  23. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +75 -0
  24. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +61 -1
  25. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +72 -0
  26. package/dist/types/data-structures/matrix/matrix.d.ts +32 -0
  27. package/dist/types/data-structures/queue/deque.d.ts +82 -0
  28. package/dist/types/data-structures/queue/queue.d.ts +61 -0
  29. package/dist/types/data-structures/stack/stack.d.ts +42 -2
  30. package/dist/types/data-structures/trie/trie.d.ts +48 -0
  31. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  32. package/dist/umd/directed-graph-typed.js +212 -14
  33. package/dist/umd/directed-graph-typed.js.map +1 -1
  34. package/dist/umd/directed-graph-typed.min.js +1 -1
  35. package/dist/umd/directed-graph-typed.min.js.map +1 -1
  36. package/package.json +2 -2
  37. package/src/data-structures/binary-tree/avl-tree.ts +52 -5
  38. package/src/data-structures/binary-tree/binary-indexed-tree.ts +56 -0
  39. package/src/data-structures/binary-tree/binary-tree.ts +167 -81
  40. package/src/data-structures/binary-tree/bst.ts +101 -7
  41. package/src/data-structures/binary-tree/red-black-tree.ts +82 -15
  42. package/src/data-structures/binary-tree/segment-tree.ts +24 -0
  43. package/src/data-structures/binary-tree/tree-map.ts +540 -3
  44. package/src/data-structures/binary-tree/tree-multi-map.ts +490 -2
  45. package/src/data-structures/binary-tree/tree-multi-set.ts +393 -1
  46. package/src/data-structures/binary-tree/tree-set.ts +520 -3
  47. package/src/data-structures/graph/directed-graph.ts +41 -1
  48. package/src/data-structures/graph/undirected-graph.ts +37 -1
  49. package/src/data-structures/hash/hash-map.ts +67 -12
  50. package/src/data-structures/heap/heap.ts +107 -19
  51. package/src/data-structures/linked-list/doubly-linked-list.ts +88 -0
  52. package/src/data-structures/linked-list/singly-linked-list.ts +61 -1
  53. package/src/data-structures/linked-list/skip-linked-list.ts +72 -0
  54. package/src/data-structures/matrix/matrix.ts +32 -0
  55. package/src/data-structures/queue/deque.ts +85 -0
  56. package/src/data-structures/queue/queue.ts +73 -0
  57. package/src/data-structures/stack/stack.ts +45 -5
  58. package/src/data-structures/trie/trie.ts +48 -0
  59. package/src/interfaces/binary-tree.ts +1 -9
@@ -741,6 +741,10 @@ var Heap = class _Heap extends IterableElementBase {
741
741
 
742
742
 
743
743
 
744
+
745
+
746
+
747
+
744
748
 
745
749
 
746
750
 
@@ -794,7 +798,7 @@ var Heap = class _Heap extends IterableElementBase {
794
798
  }
795
799
  /**
796
800
  * Insert an element.
797
- * @remarks Time O(1) amortized, Space O(1)
801
+ * @remarks Time O(log N) amortized, Space O(1)
798
802
  * @param element - Element to insert.
799
803
  * @returns True.
800
804
 
@@ -827,6 +831,10 @@ var Heap = class _Heap extends IterableElementBase {
827
831
 
828
832
 
829
833
 
834
+
835
+
836
+
837
+
830
838
 
831
839
 
832
840
 
@@ -884,6 +892,10 @@ var Heap = class _Heap extends IterableElementBase {
884
892
 
885
893
 
886
894
 
895
+
896
+
897
+
898
+
887
899
 
888
900
 
889
901
 
@@ -948,6 +960,37 @@ var Heap = class _Heap extends IterableElementBase {
948
960
 
949
961
 
950
962
 
963
+
964
+
965
+
966
+ * @example
967
+ * // Heap with custom comparator (MaxHeap behavior)
968
+ * interface Task {
969
+ * id: number;
970
+ * priority: number;
971
+ * name: string;
972
+ * }
973
+ *
974
+ * // Custom comparator for max heap behavior (higher priority first)
975
+ * const tasks: Task[] = [
976
+ * { id: 1, priority: 5, name: 'Email' },
977
+ * { id: 2, priority: 3, name: 'Chat' },
978
+ * { id: 3, priority: 8, name: 'Alert' }
979
+ * ];
980
+ *
981
+ * const maxHeap = new Heap(tasks, {
982
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
983
+ * });
984
+ *
985
+ * console.log(maxHeap.size); // 3;
986
+ *
987
+ * // Peek returns highest priority task
988
+ * const topTask = maxHeap.peek();
989
+ * console.log(topTask?.priority); // 8;
990
+ * console.log(topTask?.name); // 'Alert';
991
+ */
992
+ /**
993
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
951
994
  * @example
952
995
  * // Heap with custom comparator (MaxHeap behavior)
953
996
  * interface Task {
@@ -975,6 +1018,14 @@ var Heap = class _Heap extends IterableElementBase {
975
1018
  * console.log(topTask?.name); // 'Alert';
976
1019
  */
977
1020
  poll() {
1021
+ return this.pop();
1022
+ }
1023
+ /**
1024
+ * Remove and return the top element (min or max depending on comparator).
1025
+ * @remarks Time O(log N) amortized, Space O(1)
1026
+ * @returns The removed top element, or undefined if empty.
1027
+ */
1028
+ pop() {
978
1029
  if (this.elements.length === 0) return;
979
1030
  const value = this.elements[0];
980
1031
  const last = this.elements.pop();
@@ -1018,6 +1069,10 @@ var Heap = class _Heap extends IterableElementBase {
1018
1069
 
1019
1070
 
1020
1071
 
1072
+
1073
+
1074
+
1075
+
1021
1076
 
1022
1077
 
1023
1078
 
@@ -1118,6 +1173,10 @@ var Heap = class _Heap extends IterableElementBase {
1118
1173
 
1119
1174
 
1120
1175
 
1176
+
1177
+
1178
+
1179
+
1121
1180
 
1122
1181
 
1123
1182
 
@@ -1165,6 +1224,10 @@ var Heap = class _Heap extends IterableElementBase {
1165
1224
 
1166
1225
 
1167
1226
 
1227
+
1228
+
1229
+
1230
+
1168
1231
 
1169
1232
 
1170
1233
 
@@ -1179,16 +1242,6 @@ var Heap = class _Heap extends IterableElementBase {
1179
1242
  clear() {
1180
1243
  this._elements = [];
1181
1244
  }
1182
- /**
1183
- * Replace the backing array and rebuild the heap.
1184
- * @remarks Time O(N), Space O(N)
1185
- * @param elements - Iterable used to refill the heap.
1186
- * @returns Array of per-node results from fixing steps.
1187
- */
1188
- refill(elements) {
1189
- this._elements = Array.from(elements);
1190
- return this.fix();
1191
- }
1192
1245
  /**
1193
1246
  * Check if an equal element exists in the heap.
1194
1247
  * @remarks Time O(N), Space O(1)
@@ -1215,6 +1268,10 @@ var Heap = class _Heap extends IterableElementBase {
1215
1268
 
1216
1269
 
1217
1270
 
1271
+
1272
+
1273
+
1274
+
1218
1275
 
1219
1276
 
1220
1277
 
@@ -1262,6 +1319,10 @@ var Heap = class _Heap extends IterableElementBase {
1262
1319
 
1263
1320
 
1264
1321
 
1322
+
1323
+
1324
+
1325
+
1265
1326
 
1266
1327
 
1267
1328
 
@@ -1283,7 +1344,7 @@ var Heap = class _Heap extends IterableElementBase {
1283
1344
  }
1284
1345
  if (index < 0) return false;
1285
1346
  if (index === 0) {
1286
- this.poll();
1347
+ this.pop();
1287
1348
  } else if (index === this.elements.length - 1) {
1288
1349
  this.elements.pop();
1289
1350
  } else {
@@ -1293,13 +1354,19 @@ var Heap = class _Heap extends IterableElementBase {
1293
1354
  }
1294
1355
  return true;
1295
1356
  }
1357
+ /**
1358
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1359
+ */
1360
+ deleteBy(predicate) {
1361
+ return this.deleteWhere(predicate);
1362
+ }
1296
1363
  /**
1297
1364
  * Delete the first element that matches a predicate.
1298
1365
  * @remarks Time O(N), Space O(1)
1299
1366
  * @param predicate - Function (element, index, heap) → boolean.
1300
1367
  * @returns True if an element was removed.
1301
1368
  */
1302
- deleteBy(predicate) {
1369
+ deleteWhere(predicate) {
1303
1370
  let idx = -1;
1304
1371
  for (let i = 0; i < this.elements.length; i++) {
1305
1372
  if (predicate(this.elements[i], i, this)) {
@@ -1309,7 +1376,7 @@ var Heap = class _Heap extends IterableElementBase {
1309
1376
  }
1310
1377
  if (idx < 0) return false;
1311
1378
  if (idx === 0) {
1312
- this.poll();
1379
+ this.pop();
1313
1380
  } else if (idx === this.elements.length - 1) {
1314
1381
  this.elements.pop();
1315
1382
  } else {
@@ -1355,6 +1422,10 @@ var Heap = class _Heap extends IterableElementBase {
1355
1422
 
1356
1423
 
1357
1424
 
1425
+
1426
+
1427
+
1428
+
1358
1429
 
1359
1430
 
1360
1431
 
@@ -1435,6 +1506,10 @@ var Heap = class _Heap extends IterableElementBase {
1435
1506
 
1436
1507
 
1437
1508
 
1509
+
1510
+
1511
+
1512
+
1438
1513
 
1439
1514
 
1440
1515
 
@@ -1488,6 +1563,10 @@ var Heap = class _Heap extends IterableElementBase {
1488
1563
 
1489
1564
 
1490
1565
 
1566
+
1567
+
1568
+
1569
+
1491
1570
 
1492
1571
 
1493
1572
 
@@ -1540,6 +1619,10 @@ var Heap = class _Heap extends IterableElementBase {
1540
1619
 
1541
1620
 
1542
1621
 
1622
+
1623
+
1624
+
1625
+
1543
1626
 
1544
1627
 
1545
1628
 
@@ -1599,6 +1682,10 @@ var Heap = class _Heap extends IterableElementBase {
1599
1682
 
1600
1683
 
1601
1684
 
1685
+
1686
+
1687
+
1688
+
1602
1689
 
1603
1690
 
1604
1691
 
@@ -1812,6 +1899,10 @@ var Queue = class _Queue extends LinearBase {
1812
1899
 
1813
1900
 
1814
1901
 
1902
+
1903
+
1904
+
1905
+
1815
1906
 
1816
1907
 
1817
1908
 
@@ -1862,6 +1953,10 @@ var Queue = class _Queue extends LinearBase {
1862
1953
 
1863
1954
 
1864
1955
 
1956
+
1957
+
1958
+
1959
+
1865
1960
 
1866
1961
 
1867
1962
 
@@ -1876,6 +1971,14 @@ var Queue = class _Queue extends LinearBase {
1876
1971
  get first() {
1877
1972
  return this.length > 0 ? this.elements[this._offset] : void 0;
1878
1973
  }
1974
+ /**
1975
+ * Peek at the front element without removing it (alias for `first`).
1976
+ * @remarks Time O(1), Space O(1)
1977
+ * @returns Front element or undefined.
1978
+ */
1979
+ peek() {
1980
+ return this.first;
1981
+ }
1879
1982
  /**
1880
1983
  * Get the last element (back) without removing it.
1881
1984
  * @remarks Time O(1), Space O(1)
@@ -1928,6 +2031,10 @@ var Queue = class _Queue extends LinearBase {
1928
2031
 
1929
2032
 
1930
2033
 
2034
+
2035
+
2036
+
2037
+
1931
2038
 
1932
2039
 
1933
2040
 
@@ -1990,6 +2097,10 @@ var Queue = class _Queue extends LinearBase {
1990
2097
 
1991
2098
 
1992
2099
 
2100
+
2101
+
2102
+
2103
+
1993
2104
 
1994
2105
 
1995
2106
 
@@ -2059,6 +2170,10 @@ var Queue = class _Queue extends LinearBase {
2059
2170
 
2060
2171
 
2061
2172
 
2173
+
2174
+
2175
+
2176
+
2062
2177
 
2063
2178
 
2064
2179
 
@@ -2118,6 +2233,10 @@ var Queue = class _Queue extends LinearBase {
2118
2233
 
2119
2234
 
2120
2235
 
2236
+
2237
+
2238
+
2239
+
2121
2240
 
2122
2241
 
2123
2242
 
@@ -2170,6 +2289,10 @@ var Queue = class _Queue extends LinearBase {
2170
2289
 
2171
2290
 
2172
2291
 
2292
+
2293
+
2294
+
2295
+
2173
2296
 
2174
2297
 
2175
2298
 
@@ -2221,6 +2344,21 @@ var Queue = class _Queue extends LinearBase {
2221
2344
  this._elements[this._offset + index] = newElement;
2222
2345
  return true;
2223
2346
  }
2347
+ /**
2348
+ * Delete the first element that satisfies a predicate.
2349
+ * @remarks Time O(N), Space O(N)
2350
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2351
+ * @returns True if a match was removed.
2352
+ */
2353
+ deleteWhere(predicate) {
2354
+ for (let i = 0; i < this.length; i++) {
2355
+ if (predicate(this._elements[this._offset + i], i, this)) {
2356
+ this.deleteAt(i);
2357
+ return true;
2358
+ }
2359
+ }
2360
+ return false;
2361
+ }
2224
2362
  /**
2225
2363
  * Reverse the queue in-place by compacting then reversing.
2226
2364
  * @remarks Time O(N), Space O(N)
@@ -2263,6 +2401,10 @@ var Queue = class _Queue extends LinearBase {
2263
2401
 
2264
2402
 
2265
2403
 
2404
+
2405
+
2406
+
2407
+
2266
2408
 
2267
2409
 
2268
2410
 
@@ -2309,6 +2451,10 @@ var Queue = class _Queue extends LinearBase {
2309
2451
 
2310
2452
 
2311
2453
 
2454
+
2455
+
2456
+
2457
+
2312
2458
 
2313
2459
 
2314
2460
 
@@ -2378,6 +2524,10 @@ var Queue = class _Queue extends LinearBase {
2378
2524
 
2379
2525
 
2380
2526
 
2527
+
2528
+
2529
+
2530
+
2381
2531
 
2382
2532
 
2383
2533
 
@@ -2431,6 +2581,10 @@ var Queue = class _Queue extends LinearBase {
2431
2581
 
2432
2582
 
2433
2583
 
2584
+
2585
+
2586
+
2587
+
2434
2588
 
2435
2589
 
2436
2590
 
@@ -2488,6 +2642,10 @@ var Queue = class _Queue extends LinearBase {
2488
2642
 
2489
2643
 
2490
2644
 
2645
+
2646
+
2647
+
2648
+
2491
2649
 
2492
2650
 
2493
2651
 
@@ -3627,6 +3785,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3627
3785
 
3628
3786
 
3629
3787
 
3788
+
3789
+
3790
+
3791
+
3630
3792
 
3631
3793
 
3632
3794
 
@@ -3715,6 +3877,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3715
3877
 
3716
3878
 
3717
3879
 
3880
+
3881
+
3882
+
3883
+
3718
3884
 
3719
3885
 
3720
3886
 
@@ -3801,6 +3967,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3801
3967
 
3802
3968
 
3803
3969
 
3970
+
3971
+
3972
+
3973
+
3804
3974
 
3805
3975
 
3806
3976
 
@@ -3878,6 +4048,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3878
4048
 
3879
4049
 
3880
4050
 
4051
+
4052
+
4053
+
4054
+
3881
4055
 
3882
4056
 
3883
4057
 
@@ -3932,6 +4106,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3932
4106
 
3933
4107
 
3934
4108
 
4109
+
4110
+
4111
+
4112
+
3935
4113
 
3936
4114
 
3937
4115
 
@@ -4039,6 +4217,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4039
4217
 
4040
4218
 
4041
4219
 
4220
+
4221
+
4222
+
4223
+
4042
4224
 
4043
4225
 
4044
4226
 
@@ -4127,6 +4309,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4127
4309
 
4128
4310
 
4129
4311
 
4312
+
4313
+
4314
+
4315
+
4130
4316
 
4131
4317
 
4132
4318
 
@@ -4177,6 +4363,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4177
4363
 
4178
4364
 
4179
4365
 
4366
+
4367
+
4368
+
4369
+
4180
4370
 
4181
4371
 
4182
4372
 
@@ -4280,6 +4470,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4280
4470
 
4281
4471
 
4282
4472
 
4473
+
4474
+
4475
+
4476
+
4283
4477
 
4284
4478
 
4285
4479
 
@@ -4386,6 +4580,10 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4386
4580
 
4387
4581
 
4388
4582
 
4583
+
4584
+
4585
+
4586
+
4389
4587
 
4390
4588
 
4391
4589