undirected-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 +208 -14
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +208 -14
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +208 -14
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +208 -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/undirected-graph-typed.js +208 -14
  33. package/dist/umd/undirected-graph-typed.js.map +1 -1
  34. package/dist/umd/undirected-graph-typed.min.js +1 -1
  35. package/dist/umd/undirected-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
 
@@ -944,10 +956,41 @@ var Heap = class _Heap extends IterableElementBase {
944
956
 
945
957
 
946
958
 
959
+
960
+
961
+
947
962
 
948
963
 
949
964
 
950
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
 
@@ -3616,6 +3774,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3616
3774
 
3617
3775
 
3618
3776
 
3777
+
3778
+
3779
+
3780
+
3619
3781
 
3620
3782
 
3621
3783
 
@@ -3700,6 +3862,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3700
3862
 
3701
3863
 
3702
3864
 
3865
+
3866
+
3867
+
3868
+
3703
3869
 
3704
3870
 
3705
3871
 
@@ -3784,6 +3950,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3784
3950
 
3785
3951
 
3786
3952
 
3953
+
3954
+
3955
+
3956
+
3787
3957
 
3788
3958
 
3789
3959
 
@@ -3882,6 +4052,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3882
4052
 
3883
4053
 
3884
4054
 
4055
+
4056
+
4057
+
4058
+
3885
4059
 
3886
4060
 
3887
4061
 
@@ -3936,6 +4110,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
3936
4110
 
3937
4111
 
3938
4112
 
4113
+
4114
+
4115
+
4116
+
3939
4117
 
3940
4118
 
3941
4119
 
@@ -4060,6 +4238,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4060
4238
 
4061
4239
 
4062
4240
 
4241
+
4242
+
4243
+
4244
+
4063
4245
 
4064
4246
 
4065
4247
 
@@ -4206,6 +4388,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4206
4388
 
4207
4389
 
4208
4390
 
4391
+
4392
+
4393
+
4394
+
4209
4395
 
4210
4396
 
4211
4397
 
@@ -4274,6 +4460,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4274
4460
 
4275
4461
 
4276
4462
 
4463
+
4464
+
4465
+
4466
+
4277
4467
 
4278
4468
 
4279
4469
 
@@ -4324,6 +4514,10 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4324
4514
 
4325
4515
 
4326
4516
 
4517
+
4518
+
4519
+
4520
+
4327
4521
 
4328
4522
 
4329
4523