data-structure-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 (162) hide show
  1. package/.husky/pre-commit +3 -0
  2. package/CHANGELOG.md +3 -1
  3. package/MIGRATION.md +217 -0
  4. package/README.md +80 -8
  5. package/README_CN.md +569 -143
  6. package/SPECIFICATION.md +44 -14
  7. package/SPECIFICATION.zh-CN.md +44 -14
  8. package/dist/cjs/binary-tree.cjs +5841 -1678
  9. package/dist/cjs/graph.cjs +422 -14
  10. package/dist/cjs/hash.cjs +95 -7
  11. package/dist/cjs/heap.cjs +174 -16
  12. package/dist/cjs/index.cjs +7751 -2449
  13. package/dist/cjs/linked-list.cjs +443 -2
  14. package/dist/cjs/matrix.cjs +56 -0
  15. package/dist/cjs/priority-queue.cjs +172 -14
  16. package/dist/cjs/queue.cjs +435 -0
  17. package/dist/cjs/stack.cjs +103 -4
  18. package/dist/cjs/trie.cjs +106 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +5933 -1772
  20. package/dist/cjs-legacy/graph.cjs +422 -14
  21. package/dist/cjs-legacy/hash.cjs +95 -7
  22. package/dist/cjs-legacy/heap.cjs +174 -16
  23. package/dist/cjs-legacy/index.cjs +8154 -2854
  24. package/dist/cjs-legacy/linked-list.cjs +443 -2
  25. package/dist/cjs-legacy/matrix.cjs +56 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +172 -14
  27. package/dist/cjs-legacy/queue.cjs +435 -0
  28. package/dist/cjs-legacy/stack.cjs +103 -4
  29. package/dist/cjs-legacy/trie.cjs +106 -0
  30. package/dist/esm/binary-tree.mjs +5841 -1678
  31. package/dist/esm/graph.mjs +422 -14
  32. package/dist/esm/hash.mjs +95 -7
  33. package/dist/esm/heap.mjs +174 -16
  34. package/dist/esm/index.mjs +7751 -2449
  35. package/dist/esm/linked-list.mjs +443 -2
  36. package/dist/esm/matrix.mjs +56 -0
  37. package/dist/esm/priority-queue.mjs +172 -14
  38. package/dist/esm/queue.mjs +435 -0
  39. package/dist/esm/stack.mjs +103 -4
  40. package/dist/esm/trie.mjs +106 -0
  41. package/dist/esm-legacy/binary-tree.mjs +5933 -1772
  42. package/dist/esm-legacy/graph.mjs +422 -14
  43. package/dist/esm-legacy/hash.mjs +95 -7
  44. package/dist/esm-legacy/heap.mjs +174 -16
  45. package/dist/esm-legacy/index.mjs +8154 -2854
  46. package/dist/esm-legacy/linked-list.mjs +443 -2
  47. package/dist/esm-legacy/matrix.mjs +56 -0
  48. package/dist/esm-legacy/priority-queue.mjs +172 -14
  49. package/dist/esm-legacy/queue.mjs +435 -0
  50. package/dist/esm-legacy/stack.mjs +103 -4
  51. package/dist/esm-legacy/trie.mjs +106 -0
  52. package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
  53. package/dist/types/data-structures/base/linear-base.d.ts +6 -0
  54. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
  55. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
  56. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
  57. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
  58. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
  59. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
  60. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
  61. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
  62. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
  63. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
  64. package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
  65. package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
  66. package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
  67. package/dist/types/data-structures/heap/heap.d.ts +140 -12
  68. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
  69. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
  70. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
  71. package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
  72. package/dist/types/data-structures/queue/deque.d.ts +171 -0
  73. package/dist/types/data-structures/queue/queue.d.ts +97 -0
  74. package/dist/types/data-structures/stack/stack.d.ts +72 -2
  75. package/dist/types/data-structures/trie/trie.d.ts +84 -0
  76. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  77. package/dist/umd/data-structure-typed.js +7784 -2484
  78. package/dist/umd/data-structure-typed.min.js +4 -4
  79. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +188 -200
  80. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  81. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +62 -62
  82. package/docs-site-docusaurus/docs/api/classes/BST.md +183 -195
  83. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  85. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +143 -155
  86. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/Deque.md +99 -85
  88. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +73 -73
  89. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +100 -70
  90. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  91. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  92. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  93. package/docs-site-docusaurus/docs/api/classes/HashMap.md +38 -38
  94. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  95. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  96. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +23 -23
  97. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +48 -48
  98. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +52 -52
  99. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +46 -42
  100. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  101. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +74 -74
  102. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +73 -73
  103. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  104. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  105. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  106. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  107. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  109. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  110. package/docs-site-docusaurus/docs/api/classes/Queue.md +111 -59
  111. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +200 -212
  112. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  113. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +75 -75
  114. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  115. package/docs-site-docusaurus/docs/api/classes/SkipList.md +37 -37
  116. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  117. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +107 -36
  118. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +43 -43
  119. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +106 -35
  120. package/docs-site-docusaurus/docs/api/classes/Trie.md +43 -43
  121. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  122. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +72 -72
  123. package/docs-site-docusaurus/docs/guide/architecture.md +75 -7
  124. package/docs-site-docusaurus/docs/guide/concepts.md +53 -34
  125. package/docs-site-docusaurus/docs/guide/faq.md +53 -0
  126. package/docs-site-docusaurus/docs/guide/guides.md +8 -9
  127. package/docs-site-docusaurus/docs/guide/integrations.md +74 -177
  128. package/docs-site-docusaurus/docs/guide/overview.md +131 -17
  129. package/docs-site-docusaurus/src/pages/index.tsx +4 -0
  130. package/docs-site-docusaurus/typedoc.json +1 -0
  131. package/jest.integration.config.js +1 -2
  132. package/package.json +10 -7
  133. package/src/data-structures/base/iterable-element-base.ts +32 -0
  134. package/src/data-structures/base/linear-base.ts +11 -0
  135. package/src/data-structures/binary-tree/avl-tree.ts +88 -5
  136. package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
  137. package/src/data-structures/binary-tree/binary-tree.ts +242 -81
  138. package/src/data-structures/binary-tree/bst.ts +173 -7
  139. package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
  140. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  141. package/src/data-structures/binary-tree/tree-map.ts +948 -36
  142. package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
  143. package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
  144. package/src/data-structures/binary-tree/tree-set.ts +1260 -251
  145. package/src/data-structures/graph/directed-graph.ts +71 -1
  146. package/src/data-structures/graph/undirected-graph.ts +64 -1
  147. package/src/data-structures/hash/hash-map.ts +100 -12
  148. package/src/data-structures/heap/heap.ts +149 -19
  149. package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
  150. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  151. package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
  152. package/src/data-structures/matrix/matrix.ts +56 -0
  153. package/src/data-structures/queue/deque.ts +187 -0
  154. package/src/data-structures/queue/queue.ts +109 -0
  155. package/src/data-structures/stack/stack.ts +75 -5
  156. package/src/data-structures/trie/trie.ts +84 -0
  157. package/src/interfaces/binary-tree.ts +1 -9
  158. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  159. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  160. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  161. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  162. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
@@ -161,6 +161,35 @@ var IterableElementBase = class {
161
161
  for (const ele of this) if (ele === element) return true;
162
162
  return false;
163
163
  }
164
+ /**
165
+ * Check whether a value exists (Array-compatible alias for `has`).
166
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
167
+ * @param element - Element to search for (uses `===`).
168
+ * @returns `true` if found.
169
+ */
170
+ includes(element) {
171
+ return this.has(element);
172
+ }
173
+ /**
174
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
175
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
176
+ */
177
+ *entries() {
178
+ let index = 0;
179
+ for (const value of this) {
180
+ yield [index++, value];
181
+ }
182
+ }
183
+ /**
184
+ * Return an iterator of numeric indices (Array-compatible).
185
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
186
+ */
187
+ *keys() {
188
+ let index = 0;
189
+ for (const _ of this) {
190
+ yield index++;
191
+ }
192
+ }
164
193
  /**
165
194
  * Reduces all elements to a single accumulated value.
166
195
  *
@@ -287,6 +316,13 @@ var Stack = class extends IterableElementBase {
287
316
 
288
317
 
289
318
 
319
+
320
+
321
+
322
+
323
+
324
+
325
+
290
326
 
291
327
 
292
328
 
@@ -347,6 +383,13 @@ var Stack = class extends IterableElementBase {
347
383
 
348
384
 
349
385
 
386
+
387
+
388
+
389
+
390
+
391
+
392
+
350
393
 
351
394
 
352
395
 
@@ -396,6 +439,13 @@ var Stack = class extends IterableElementBase {
396
439
 
397
440
 
398
441
 
442
+
443
+
444
+
445
+
446
+
447
+
448
+
399
449
 
400
450
 
401
451
 
@@ -445,6 +495,13 @@ var Stack = class extends IterableElementBase {
445
495
 
446
496
 
447
497
 
498
+
499
+
500
+
501
+
502
+
503
+
504
+
448
505
 
449
506
 
450
507
 
@@ -503,6 +560,13 @@ var Stack = class extends IterableElementBase {
503
560
 
504
561
 
505
562
 
563
+
564
+
565
+
566
+
567
+
568
+
569
+
506
570
 
507
571
 
508
572
 
@@ -576,6 +640,13 @@ var Stack = class extends IterableElementBase {
576
640
 
577
641
 
578
642
 
643
+
644
+
645
+
646
+
647
+
648
+
649
+
579
650
 
580
651
 
581
652
 
@@ -592,18 +663,18 @@ var Stack = class extends IterableElementBase {
592
663
  */
593
664
  delete(element) {
594
665
  const idx = this._indexOfByEquals(element);
595
- return this.deleteAt(idx);
666
+ return this.deleteAt(idx) !== void 0;
596
667
  }
597
668
  /**
598
669
  * Delete the element at an index.
599
670
  * @remarks Time O(N), Space O(1)
600
671
  * @param index - Zero-based index from the bottom.
601
- * @returns True if removed.
672
+ * @returns The removed element, or undefined if the index is out of range.
602
673
  */
603
674
  deleteAt(index) {
604
- if (index < 0 || index >= this.elements.length) return false;
675
+ if (index < 0 || index >= this.elements.length) return void 0;
605
676
  const spliced = this.elements.splice(index, 1);
606
- return spliced.length === 1;
677
+ return spliced[0];
607
678
  }
608
679
  /**
609
680
  * Delete the first element that satisfies a predicate.
@@ -649,6 +720,13 @@ var Stack = class extends IterableElementBase {
649
720
 
650
721
 
651
722
 
723
+
724
+
725
+
726
+
727
+
728
+
729
+
652
730
 
653
731
 
654
732
 
@@ -695,6 +773,13 @@ var Stack = class extends IterableElementBase {
695
773
 
696
774
 
697
775
 
776
+
777
+
778
+
779
+
780
+
781
+
782
+
698
783
 
699
784
 
700
785
 
@@ -747,6 +832,13 @@ var Stack = class extends IterableElementBase {
747
832
 
748
833
 
749
834
 
835
+
836
+
837
+
838
+
839
+
840
+
841
+
750
842
 
751
843
 
752
844
 
@@ -819,6 +911,13 @@ var Stack = class extends IterableElementBase {
819
911
 
820
912
 
821
913
 
914
+
915
+
916
+
917
+
918
+
919
+
920
+
822
921
 
823
922
 
824
923
 
package/dist/cjs/trie.cjs CHANGED
@@ -186,6 +186,35 @@ var IterableElementBase = class {
186
186
  for (const ele of this) if (ele === element) return true;
187
187
  return false;
188
188
  }
189
+ /**
190
+ * Check whether a value exists (Array-compatible alias for `has`).
191
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
192
+ * @param element - Element to search for (uses `===`).
193
+ * @returns `true` if found.
194
+ */
195
+ includes(element) {
196
+ return this.has(element);
197
+ }
198
+ /**
199
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
200
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
201
+ */
202
+ *entries() {
203
+ let index = 0;
204
+ for (const value of this) {
205
+ yield [index++, value];
206
+ }
207
+ }
208
+ /**
209
+ * Return an iterator of numeric indices (Array-compatible).
210
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
211
+ */
212
+ *keys() {
213
+ let index = 0;
214
+ for (const _ of this) {
215
+ yield index++;
216
+ }
217
+ }
189
218
  /**
190
219
  * Reduces all elements to a single accumulated value.
191
220
  *
@@ -415,6 +444,13 @@ var Trie = class extends IterableElementBase {
415
444
 
416
445
 
417
446
 
447
+
448
+
449
+
450
+
451
+
452
+
453
+
418
454
 
419
455
 
420
456
 
@@ -487,6 +523,13 @@ var Trie = class extends IterableElementBase {
487
523
 
488
524
 
489
525
 
526
+
527
+
528
+
529
+
530
+
531
+
532
+
490
533
 
491
534
 
492
535
 
@@ -546,6 +589,13 @@ var Trie = class extends IterableElementBase {
546
589
 
547
590
 
548
591
 
592
+
593
+
594
+
595
+
596
+
597
+
598
+
549
599
 
550
600
 
551
601
 
@@ -600,6 +650,13 @@ var Trie = class extends IterableElementBase {
600
650
 
601
651
 
602
652
 
653
+
654
+
655
+
656
+
657
+
658
+
659
+
603
660
 
604
661
 
605
662
 
@@ -646,6 +703,13 @@ var Trie = class extends IterableElementBase {
646
703
 
647
704
 
648
705
 
706
+
707
+
708
+
709
+
710
+
711
+
712
+
649
713
 
650
714
 
651
715
 
@@ -696,6 +760,13 @@ var Trie = class extends IterableElementBase {
696
760
 
697
761
 
698
762
 
763
+
764
+
765
+
766
+
767
+
768
+
769
+
699
770
 
700
771
 
701
772
 
@@ -828,6 +899,13 @@ var Trie = class extends IterableElementBase {
828
899
 
829
900
 
830
901
 
902
+
903
+
904
+
905
+
906
+
907
+
908
+
831
909
 
832
910
 
833
911
 
@@ -904,6 +982,13 @@ var Trie = class extends IterableElementBase {
904
982
 
905
983
 
906
984
 
985
+
986
+
987
+
988
+
989
+
990
+
991
+
907
992
 
908
993
 
909
994
 
@@ -963,6 +1048,13 @@ var Trie = class extends IterableElementBase {
963
1048
 
964
1049
 
965
1050
 
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
966
1058
 
967
1059
 
968
1060
 
@@ -1040,6 +1132,13 @@ var Trie = class extends IterableElementBase {
1040
1132
 
1041
1133
 
1042
1134
 
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1043
1142
 
1044
1143
 
1045
1144
 
@@ -1090,6 +1189,13 @@ var Trie = class extends IterableElementBase {
1090
1189
 
1091
1190
 
1092
1191
 
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1093
1199
 
1094
1200
 
1095
1201