data-structure-typed 1.40.0-rc → 1.41.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 (1066) hide show
  1. package/.eslintrc.js +7 -5
  2. package/.github/workflows/ci.yml +2 -20
  3. package/.travis.yml +3 -4
  4. package/CHANGELOG.md +23 -1
  5. package/CONTRIBUTING.md +13 -0
  6. package/README.md +20 -11
  7. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +106 -0
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.js +348 -0
  9. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -0
  10. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.d.ts +149 -0
  11. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +270 -0
  12. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +363 -0
  14. package/dist/cjs/data-structures/binary-tree/binary-tree.js +1136 -0
  15. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -0
  16. package/dist/cjs/data-structures/binary-tree/bst.d.ts +167 -0
  17. package/dist/cjs/data-structures/binary-tree/bst.js +513 -0
  18. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -0
  19. package/dist/cjs/data-structures/binary-tree/index.d.ts +7 -0
  20. package/dist/cjs/data-structures/binary-tree/index.js +24 -0
  21. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -0
  22. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +97 -0
  23. package/dist/cjs/data-structures/binary-tree/rb-tree.js +389 -0
  24. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -0
  25. package/dist/cjs/data-structures/binary-tree/segment-tree.d.ts +67 -0
  26. package/dist/cjs/data-structures/binary-tree/segment-tree.js +181 -0
  27. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +1 -0
  28. package/dist/cjs/data-structures/binary-tree/tree-multiset.d.ts +126 -0
  29. package/dist/cjs/data-structures/binary-tree/tree-multiset.js +356 -0
  30. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -0
  31. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +313 -0
  32. package/dist/cjs/data-structures/graph/abstract-graph.js +885 -0
  33. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -0
  34. package/dist/cjs/data-structures/graph/directed-graph.d.ts +194 -0
  35. package/dist/cjs/data-structures/graph/directed-graph.js +405 -0
  36. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -0
  37. package/dist/cjs/data-structures/graph/index.js.map +1 -0
  38. package/dist/cjs/data-structures/graph/map-graph.d.ts +73 -0
  39. package/dist/cjs/data-structures/graph/map-graph.js +94 -0
  40. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -0
  41. package/dist/cjs/data-structures/graph/undirected-graph.d.ts +120 -0
  42. package/dist/cjs/data-structures/graph/undirected-graph.js +240 -0
  43. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -0
  44. package/dist/cjs/data-structures/hash/coordinate-map.d.ts +44 -0
  45. package/dist/cjs/data-structures/hash/coordinate-map.js +63 -0
  46. package/dist/cjs/data-structures/hash/coordinate-map.js.map +1 -0
  47. package/dist/cjs/data-structures/hash/coordinate-set.d.ts +36 -0
  48. package/dist/cjs/data-structures/hash/coordinate-set.js +53 -0
  49. package/dist/cjs/data-structures/hash/coordinate-set.js.map +1 -0
  50. package/dist/cjs/data-structures/hash/hash-map.d.ts +50 -0
  51. package/dist/cjs/data-structures/hash/hash-map.js +154 -0
  52. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -0
  53. package/dist/cjs/data-structures/hash/hash-table.d.ts +103 -0
  54. package/dist/cjs/data-structures/hash/hash-table.js +237 -0
  55. package/dist/cjs/data-structures/hash/hash-table.js.map +1 -0
  56. package/dist/cjs/data-structures/hash/index.d.ts +6 -0
  57. package/dist/cjs/data-structures/hash/index.js +23 -0
  58. package/dist/cjs/data-structures/hash/index.js.map +1 -0
  59. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -0
  60. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -0
  61. package/dist/cjs/data-structures/heap/heap.d.ts +235 -0
  62. package/dist/cjs/data-structures/heap/heap.js +516 -0
  63. package/dist/cjs/data-structures/heap/heap.js.map +1 -0
  64. package/dist/cjs/data-structures/heap/index.js.map +1 -0
  65. package/dist/cjs/data-structures/heap/max-heap.d.ts +15 -0
  66. package/dist/cjs/data-structures/heap/max-heap.js +27 -0
  67. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -0
  68. package/dist/cjs/data-structures/heap/min-heap.d.ts +15 -0
  69. package/dist/cjs/data-structures/heap/min-heap.js +27 -0
  70. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -0
  71. package/dist/cjs/data-structures/index.js.map +1 -0
  72. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +253 -0
  73. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +570 -0
  74. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  75. package/dist/cjs/data-structures/linked-list/index.js.map +1 -0
  76. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +232 -0
  77. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +534 -0
  78. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -0
  79. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +80 -0
  80. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +188 -0
  81. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -0
  82. package/dist/cjs/data-structures/matrix/index.js.map +1 -0
  83. package/dist/cjs/data-structures/matrix/matrix.d.ts +21 -0
  84. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -0
  85. package/dist/cjs/data-structures/matrix/matrix2d.d.ts +107 -0
  86. package/dist/cjs/data-structures/matrix/matrix2d.js +200 -0
  87. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -0
  88. package/dist/cjs/data-structures/matrix/navigator.d.ts +52 -0
  89. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -0
  90. package/dist/cjs/data-structures/matrix/vector2d.d.ts +200 -0
  91. package/dist/cjs/data-structures/matrix/vector2d.js +291 -0
  92. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -0
  93. package/dist/cjs/data-structures/priority-queue/index.js.map +1 -0
  94. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +15 -0
  95. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +27 -0
  96. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  97. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +15 -0
  98. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +27 -0
  99. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  100. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +15 -0
  101. package/dist/cjs/data-structures/priority-queue/priority-queue.js +18 -0
  102. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -0
  103. package/dist/cjs/data-structures/queue/deque.d.ts +161 -0
  104. package/dist/cjs/data-structures/queue/deque.js +265 -0
  105. package/dist/cjs/data-structures/queue/deque.js.map +1 -0
  106. package/dist/cjs/data-structures/queue/index.js.map +1 -0
  107. package/dist/cjs/data-structures/queue/queue.d.ts +122 -0
  108. package/dist/cjs/data-structures/queue/queue.js +188 -0
  109. package/dist/cjs/data-structures/queue/queue.js.map +1 -0
  110. package/dist/cjs/data-structures/stack/index.js.map +1 -0
  111. package/dist/cjs/data-structures/stack/stack.d.ts +64 -0
  112. package/dist/cjs/data-structures/stack/stack.js +95 -0
  113. package/dist/cjs/data-structures/stack/stack.js.map +1 -0
  114. package/dist/cjs/data-structures/tree/index.js.map +1 -0
  115. package/dist/cjs/data-structures/tree/tree.d.ts +8 -0
  116. package/dist/cjs/data-structures/tree/tree.js +41 -0
  117. package/dist/cjs/data-structures/tree/tree.js.map +1 -0
  118. package/dist/cjs/data-structures/trie/index.js.map +1 -0
  119. package/dist/cjs/data-structures/trie/trie.d.ts +79 -0
  120. package/dist/cjs/data-structures/trie/trie.js +252 -0
  121. package/dist/cjs/data-structures/trie/trie.js.map +1 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/interfaces/binary-tree.d.ts +7 -0
  124. package/dist/cjs/interfaces/binary-tree.js.map +1 -0
  125. package/dist/cjs/interfaces/doubly-linked-list.js.map +1 -0
  126. package/dist/cjs/interfaces/graph.d.ts +5 -0
  127. package/dist/cjs/interfaces/graph.js +3 -0
  128. package/dist/cjs/interfaces/graph.js.map +1 -0
  129. package/dist/cjs/interfaces/heap.js.map +1 -0
  130. package/dist/cjs/interfaces/index.d.ts +8 -0
  131. package/dist/cjs/interfaces/index.js +25 -0
  132. package/dist/cjs/interfaces/index.js.map +1 -0
  133. package/dist/cjs/interfaces/navigator.js.map +1 -0
  134. package/dist/cjs/interfaces/priority-queue.js.map +1 -0
  135. package/dist/cjs/interfaces/segment-tree.js.map +1 -0
  136. package/dist/cjs/interfaces/singly-linked-list.js.map +1 -0
  137. package/dist/cjs/types/data-structures/binary-tree/avl-tree.d.ts +4 -0
  138. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +1 -0
  139. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js +3 -0
  140. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  141. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +29 -0
  142. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js +25 -0
  143. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +1 -0
  144. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +7 -0
  145. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +1 -0
  146. package/dist/cjs/types/data-structures/binary-tree/index.d.ts +6 -0
  147. package/dist/cjs/types/data-structures/binary-tree/index.js +23 -0
  148. package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -0
  149. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -0
  150. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js +14 -0
  151. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +1 -0
  152. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +1 -0
  153. package/dist/cjs/types/data-structures/binary-tree/tree-multiset.d.ts +4 -0
  154. package/dist/cjs/types/data-structures/binary-tree/tree-multiset.js.map +1 -0
  155. package/dist/cjs/types/data-structures/graph/abstract-graph.d.ts +10 -0
  156. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +1 -0
  157. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +1 -0
  158. package/dist/cjs/types/data-structures/graph/index.d.ts +3 -0
  159. package/dist/cjs/types/data-structures/graph/index.js +20 -0
  160. package/dist/cjs/types/data-structures/graph/index.js.map +1 -0
  161. package/dist/cjs/types/data-structures/graph/map-graph.js.map +1 -0
  162. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +1 -0
  163. package/dist/cjs/types/data-structures/hash/coordinate-map.js +3 -0
  164. package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +1 -0
  165. package/dist/cjs/types/data-structures/hash/coordinate-set.js +3 -0
  166. package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +1 -0
  167. package/dist/cjs/types/data-structures/hash/hash-map.js +3 -0
  168. package/dist/cjs/types/data-structures/hash/hash-map.js.map +1 -0
  169. package/dist/cjs/types/data-structures/hash/hash-table.js +3 -0
  170. package/dist/cjs/types/data-structures/hash/hash-table.js.map +1 -0
  171. package/dist/cjs/types/data-structures/hash/index.js +3 -0
  172. package/dist/cjs/types/data-structures/hash/index.js.map +1 -0
  173. package/dist/cjs/types/data-structures/hash/tree-map.js +3 -0
  174. package/dist/cjs/types/data-structures/hash/tree-map.js.map +1 -0
  175. package/dist/cjs/types/data-structures/hash/tree-set.js +3 -0
  176. package/dist/cjs/types/data-structures/hash/tree-set.js.map +1 -0
  177. package/dist/cjs/types/data-structures/heap/heap.js.map +1 -0
  178. package/dist/cjs/types/data-structures/heap/index.d.ts +1 -0
  179. package/dist/cjs/types/data-structures/heap/index.js +18 -0
  180. package/dist/cjs/types/data-structures/heap/index.js.map +1 -0
  181. package/dist/cjs/types/data-structures/heap/max-heap.js +3 -0
  182. package/dist/cjs/types/data-structures/heap/max-heap.js.map +1 -0
  183. package/dist/cjs/types/data-structures/heap/min-heap.js +3 -0
  184. package/dist/cjs/types/data-structures/heap/min-heap.js.map +1 -0
  185. package/dist/cjs/types/data-structures/index.d.ts +11 -0
  186. package/dist/cjs/types/data-structures/index.js +28 -0
  187. package/dist/cjs/types/data-structures/index.js.map +1 -0
  188. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  189. package/dist/cjs/types/data-structures/linked-list/index.d.ts +2 -0
  190. package/dist/cjs/types/data-structures/linked-list/index.js +19 -0
  191. package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -0
  192. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +1 -0
  193. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js +3 -0
  194. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +1 -0
  195. package/dist/cjs/types/data-structures/matrix/index.d.ts +1 -0
  196. package/dist/cjs/types/data-structures/matrix/index.js +18 -0
  197. package/dist/cjs/types/data-structures/matrix/index.js.map +1 -0
  198. package/dist/cjs/types/data-structures/matrix/matrix.js +3 -0
  199. package/dist/cjs/types/data-structures/matrix/matrix.js.map +1 -0
  200. package/dist/cjs/types/data-structures/matrix/matrix2d.js +3 -0
  201. package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +1 -0
  202. package/dist/cjs/types/data-structures/matrix/navigator.js.map +1 -0
  203. package/dist/cjs/types/data-structures/matrix/vector2d.js +3 -0
  204. package/dist/cjs/types/data-structures/matrix/vector2d.js.map +1 -0
  205. package/dist/cjs/types/data-structures/priority-queue/index.js +20 -0
  206. package/dist/cjs/types/data-structures/priority-queue/index.js.map +1 -0
  207. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js +3 -0
  208. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  209. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js +3 -0
  210. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  211. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +1 -0
  212. package/dist/cjs/types/data-structures/queue/deque.js +3 -0
  213. package/dist/cjs/types/data-structures/queue/deque.js.map +1 -0
  214. package/dist/cjs/types/data-structures/queue/index.js +19 -0
  215. package/dist/cjs/types/data-structures/queue/index.js.map +1 -0
  216. package/dist/cjs/types/data-structures/queue/queue.js +3 -0
  217. package/dist/cjs/types/data-structures/queue/queue.js.map +1 -0
  218. package/dist/cjs/types/data-structures/stack/index.js +18 -0
  219. package/dist/cjs/types/data-structures/stack/index.js.map +1 -0
  220. package/dist/cjs/types/data-structures/stack/stack.js +3 -0
  221. package/dist/cjs/types/data-structures/stack/stack.js.map +1 -0
  222. package/dist/cjs/types/data-structures/tree/index.js +18 -0
  223. package/dist/cjs/types/data-structures/tree/index.js.map +1 -0
  224. package/dist/cjs/types/data-structures/tree/tree.js +3 -0
  225. package/dist/cjs/types/data-structures/tree/tree.js.map +1 -0
  226. package/dist/cjs/types/data-structures/trie/index.js +18 -0
  227. package/dist/cjs/types/data-structures/trie/index.js.map +1 -0
  228. package/dist/cjs/types/data-structures/trie/trie.js +3 -0
  229. package/dist/cjs/types/data-structures/trie/trie.js.map +1 -0
  230. package/dist/cjs/types/helpers.d.ts +8 -0
  231. package/dist/cjs/types/helpers.js +10 -0
  232. package/dist/cjs/types/helpers.js.map +1 -0
  233. package/dist/cjs/types/index.js.map +1 -0
  234. package/dist/cjs/types/utils/index.js.map +1 -0
  235. package/dist/cjs/types/utils/utils.js.map +1 -0
  236. package/dist/cjs/types/utils/validate-type.js.map +1 -0
  237. package/dist/cjs/utils/index.js.map +1 -0
  238. package/dist/cjs/utils/utils.d.ts +20 -0
  239. package/dist/cjs/utils/utils.js +74 -0
  240. package/dist/cjs/utils/utils.js.map +1 -0
  241. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +106 -0
  242. package/dist/mjs/data-structures/binary-tree/avl-tree.js +348 -0
  243. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.d.ts +149 -0
  244. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js +274 -0
  245. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +363 -0
  246. package/dist/mjs/data-structures/binary-tree/binary-tree.js +1147 -0
  247. package/dist/mjs/data-structures/binary-tree/bst.d.ts +167 -0
  248. package/dist/mjs/data-structures/binary-tree/bst.js +509 -0
  249. package/dist/mjs/data-structures/binary-tree/index.d.ts +7 -0
  250. package/dist/mjs/data-structures/binary-tree/index.js +23 -0
  251. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +97 -0
  252. package/dist/mjs/data-structures/binary-tree/rb-tree.js +393 -0
  253. package/dist/mjs/data-structures/binary-tree/segment-tree.d.ts +67 -0
  254. package/dist/mjs/data-structures/binary-tree/segment-tree.js +182 -0
  255. package/dist/mjs/data-structures/binary-tree/tree-multiset.d.ts +126 -0
  256. package/dist/mjs/data-structures/binary-tree/tree-multiset.js +356 -0
  257. package/dist/mjs/data-structures/graph/abstract-graph.d.ts +313 -0
  258. package/dist/mjs/data-structures/graph/abstract-graph.js +883 -0
  259. package/dist/mjs/data-structures/graph/directed-graph.d.ts +194 -0
  260. package/dist/mjs/data-structures/graph/directed-graph.js +406 -0
  261. package/dist/mjs/data-structures/graph/index.js +20 -0
  262. package/dist/mjs/data-structures/graph/map-graph.d.ts +73 -0
  263. package/dist/mjs/data-structures/graph/map-graph.js +96 -0
  264. package/dist/mjs/data-structures/graph/undirected-graph.d.ts +120 -0
  265. package/dist/mjs/data-structures/graph/undirected-graph.js +239 -0
  266. package/dist/mjs/data-structures/hash/coordinate-map.d.ts +44 -0
  267. package/dist/mjs/data-structures/hash/coordinate-map.js +62 -0
  268. package/dist/mjs/data-structures/hash/coordinate-set.d.ts +36 -0
  269. package/dist/mjs/data-structures/hash/coordinate-set.js +52 -0
  270. package/dist/mjs/data-structures/hash/hash-map.d.ts +50 -0
  271. package/dist/mjs/data-structures/hash/hash-map.js +159 -0
  272. package/dist/mjs/data-structures/hash/hash-table.d.ts +103 -0
  273. package/dist/mjs/data-structures/hash/hash-table.js +243 -0
  274. package/dist/mjs/data-structures/hash/index.d.ts +6 -0
  275. package/dist/mjs/data-structures/hash/index.js +22 -0
  276. package/dist/mjs/data-structures/hash/tree-map.js +6 -0
  277. package/dist/mjs/data-structures/hash/tree-set.js +6 -0
  278. package/dist/mjs/data-structures/heap/heap.d.ts +235 -0
  279. package/dist/mjs/data-structures/heap/heap.js +525 -0
  280. package/dist/mjs/data-structures/heap/index.js +19 -0
  281. package/dist/mjs/data-structures/heap/max-heap.d.ts +15 -0
  282. package/dist/mjs/data-structures/heap/max-heap.js +26 -0
  283. package/dist/mjs/data-structures/heap/min-heap.d.ts +15 -0
  284. package/dist/mjs/data-structures/heap/min-heap.js +26 -0
  285. package/dist/mjs/data-structures/index.js +27 -0
  286. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +253 -0
  287. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +573 -0
  288. package/dist/mjs/data-structures/linked-list/index.js +19 -0
  289. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +232 -0
  290. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +538 -0
  291. package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +80 -0
  292. package/dist/mjs/data-structures/linked-list/skip-linked-list.js +194 -0
  293. package/dist/mjs/data-structures/matrix/index.js +20 -0
  294. package/dist/mjs/data-structures/matrix/matrix.d.ts +21 -0
  295. package/dist/mjs/data-structures/matrix/matrix.js +29 -0
  296. package/dist/mjs/data-structures/matrix/matrix2d.d.ts +107 -0
  297. package/dist/mjs/data-structures/matrix/matrix2d.js +200 -0
  298. package/dist/mjs/data-structures/matrix/navigator.d.ts +52 -0
  299. package/dist/mjs/data-structures/matrix/navigator.js +113 -0
  300. package/dist/mjs/data-structures/matrix/vector2d.d.ts +200 -0
  301. package/dist/mjs/data-structures/matrix/vector2d.js +293 -0
  302. package/dist/mjs/data-structures/priority-queue/index.js +19 -0
  303. package/dist/mjs/data-structures/priority-queue/max-priority-queue.d.ts +15 -0
  304. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +26 -0
  305. package/dist/mjs/data-structures/priority-queue/min-priority-queue.d.ts +15 -0
  306. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +26 -0
  307. package/dist/mjs/data-structures/priority-queue/priority-queue.d.ts +15 -0
  308. package/dist/mjs/data-structures/priority-queue/priority-queue.js +17 -0
  309. package/dist/mjs/data-structures/queue/deque.d.ts +161 -0
  310. package/dist/mjs/data-structures/queue/deque.js +257 -0
  311. package/dist/mjs/data-structures/queue/index.js +18 -0
  312. package/dist/mjs/data-structures/queue/queue.d.ts +122 -0
  313. package/dist/mjs/data-structures/queue/queue.js +188 -0
  314. package/dist/mjs/data-structures/stack/index.js +17 -0
  315. package/dist/mjs/data-structures/stack/stack.d.ts +64 -0
  316. package/dist/mjs/data-structures/stack/stack.js +95 -0
  317. package/dist/mjs/data-structures/tree/index.js +17 -0
  318. package/dist/mjs/data-structures/tree/tree.d.ts +8 -0
  319. package/dist/mjs/data-structures/tree/tree.js +43 -0
  320. package/dist/mjs/data-structures/trie/index.js +17 -0
  321. package/dist/mjs/data-structures/trie/trie.d.ts +79 -0
  322. package/dist/mjs/data-structures/trie/trie.js +256 -0
  323. package/dist/mjs/index.js +20 -0
  324. package/dist/mjs/interfaces/binary-tree.d.ts +7 -0
  325. package/dist/mjs/interfaces/binary-tree.js +2 -0
  326. package/dist/mjs/interfaces/doubly-linked-list.js +2 -0
  327. package/dist/mjs/interfaces/graph.d.ts +5 -0
  328. package/dist/mjs/interfaces/graph.js +2 -0
  329. package/dist/mjs/interfaces/heap.js +2 -0
  330. package/dist/mjs/interfaces/index.d.ts +8 -0
  331. package/dist/mjs/interfaces/index.js +24 -0
  332. package/dist/mjs/interfaces/navigator.js +2 -0
  333. package/dist/mjs/interfaces/priority-queue.js +2 -0
  334. package/dist/mjs/interfaces/segment-tree.js +2 -0
  335. package/dist/mjs/interfaces/singly-linked-list.js +2 -0
  336. package/dist/mjs/types/data-structures/binary-tree/avl-tree.d.ts +4 -0
  337. package/dist/mjs/types/data-structures/binary-tree/avl-tree.js +2 -0
  338. package/dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.js +2 -0
  339. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +29 -0
  340. package/dist/mjs/types/data-structures/binary-tree/binary-tree.js +24 -0
  341. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +7 -0
  342. package/dist/mjs/types/data-structures/binary-tree/bst.js +2 -0
  343. package/dist/mjs/types/data-structures/binary-tree/index.d.ts +6 -0
  344. package/dist/mjs/types/data-structures/binary-tree/index.js +22 -0
  345. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -0
  346. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +13 -0
  347. package/dist/mjs/types/data-structures/binary-tree/segment-tree.js +2 -0
  348. package/dist/mjs/types/data-structures/binary-tree/tree-multiset.d.ts +4 -0
  349. package/dist/mjs/types/data-structures/binary-tree/tree-multiset.js +2 -0
  350. package/dist/mjs/types/data-structures/graph/abstract-graph.d.ts +10 -0
  351. package/dist/mjs/types/data-structures/graph/abstract-graph.js +2 -0
  352. package/dist/mjs/types/data-structures/graph/directed-graph.js +9 -0
  353. package/dist/mjs/types/data-structures/graph/index.d.ts +3 -0
  354. package/dist/mjs/types/data-structures/graph/index.js +19 -0
  355. package/dist/mjs/types/data-structures/graph/map-graph.js +2 -0
  356. package/dist/mjs/types/data-structures/graph/undirected-graph.js +2 -0
  357. package/dist/mjs/types/data-structures/hash/coordinate-map.js +2 -0
  358. package/dist/mjs/types/data-structures/hash/coordinate-set.js +2 -0
  359. package/dist/mjs/types/data-structures/hash/hash-map.js +2 -0
  360. package/dist/mjs/types/data-structures/hash/hash-table.js +2 -0
  361. package/dist/mjs/types/data-structures/hash/index.js +2 -0
  362. package/dist/mjs/types/data-structures/hash/tree-map.js +2 -0
  363. package/dist/mjs/types/data-structures/hash/tree-set.js +2 -0
  364. package/dist/mjs/types/data-structures/heap/heap.js +2 -0
  365. package/dist/mjs/types/data-structures/heap/index.d.ts +1 -0
  366. package/dist/mjs/types/data-structures/heap/index.js +17 -0
  367. package/dist/mjs/types/data-structures/heap/max-heap.js +2 -0
  368. package/dist/mjs/types/data-structures/heap/min-heap.js +2 -0
  369. package/dist/mjs/types/data-structures/index.d.ts +11 -0
  370. package/dist/mjs/types/data-structures/index.js +27 -0
  371. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js +2 -0
  372. package/dist/mjs/types/data-structures/linked-list/index.d.ts +2 -0
  373. package/dist/mjs/types/data-structures/linked-list/index.js +18 -0
  374. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js +2 -0
  375. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.d.ts +1 -0
  376. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js +2 -0
  377. package/dist/mjs/types/data-structures/matrix/index.d.ts +1 -0
  378. package/dist/mjs/types/data-structures/matrix/index.js +17 -0
  379. package/dist/mjs/types/data-structures/matrix/matrix.d.ts +1 -0
  380. package/dist/mjs/types/data-structures/matrix/matrix.js +2 -0
  381. package/dist/mjs/types/data-structures/matrix/matrix2d.d.ts +1 -0
  382. package/dist/mjs/types/data-structures/matrix/matrix2d.js +2 -0
  383. package/dist/mjs/types/data-structures/matrix/navigator.js +2 -0
  384. package/dist/mjs/types/data-structures/matrix/vector2d.d.ts +1 -0
  385. package/dist/mjs/types/data-structures/matrix/vector2d.js +2 -0
  386. package/dist/mjs/types/data-structures/priority-queue/index.d.ts +3 -0
  387. package/dist/mjs/types/data-structures/priority-queue/index.js +19 -0
  388. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -0
  389. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js +2 -0
  390. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.d.ts +1 -0
  391. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js +2 -0
  392. package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  393. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js +2 -0
  394. package/dist/mjs/types/data-structures/queue/deque.d.ts +1 -0
  395. package/dist/mjs/types/data-structures/queue/deque.js +2 -0
  396. package/dist/mjs/types/data-structures/queue/index.d.ts +2 -0
  397. package/dist/mjs/types/data-structures/queue/index.js +18 -0
  398. package/dist/mjs/types/data-structures/queue/queue.d.ts +1 -0
  399. package/dist/mjs/types/data-structures/queue/queue.js +2 -0
  400. package/dist/mjs/types/data-structures/stack/index.d.ts +1 -0
  401. package/dist/mjs/types/data-structures/stack/index.js +17 -0
  402. package/dist/mjs/types/data-structures/stack/stack.d.ts +1 -0
  403. package/dist/mjs/types/data-structures/stack/stack.js +2 -0
  404. package/dist/mjs/types/data-structures/tree/index.d.ts +1 -0
  405. package/dist/mjs/types/data-structures/tree/index.js +17 -0
  406. package/dist/mjs/types/data-structures/tree/tree.d.ts +1 -0
  407. package/dist/mjs/types/data-structures/tree/tree.js +2 -0
  408. package/dist/mjs/types/data-structures/trie/index.d.ts +1 -0
  409. package/dist/mjs/types/data-structures/trie/index.js +17 -0
  410. package/dist/mjs/types/data-structures/trie/trie.d.ts +1 -0
  411. package/dist/mjs/types/data-structures/trie/trie.js +2 -0
  412. package/dist/mjs/types/helpers.d.ts +8 -0
  413. package/dist/mjs/types/helpers.js +9 -0
  414. package/dist/mjs/types/index.js +19 -0
  415. package/dist/mjs/types/utils/index.js +18 -0
  416. package/dist/mjs/types/utils/utils.js +2 -0
  417. package/dist/mjs/types/utils/validate-type.js +2 -0
  418. package/dist/mjs/utils/index.js +17 -0
  419. package/dist/mjs/utils/utils.d.ts +20 -0
  420. package/dist/mjs/utils/utils.js +64 -0
  421. package/dist/umd/data-structure-typed.min.js +27 -0
  422. package/dist/umd/data-structure-typed.min.js.map +1 -0
  423. package/package.json +28 -22
  424. package/src/data-structures/binary-tree/avl-tree.ts +88 -74
  425. package/src/data-structures/binary-tree/binary-indexed-tree.ts +265 -35
  426. package/src/data-structures/binary-tree/binary-tree.ts +1263 -26
  427. package/src/data-structures/binary-tree/bst.ts +217 -237
  428. package/src/data-structures/binary-tree/index.ts +0 -5
  429. package/src/data-structures/binary-tree/rb-tree.ts +416 -356
  430. package/src/data-structures/binary-tree/segment-tree.ts +25 -92
  431. package/src/data-structures/binary-tree/tree-multiset.ts +113 -422
  432. package/src/data-structures/graph/abstract-graph.ts +169 -214
  433. package/src/data-structures/graph/directed-graph.ts +105 -126
  434. package/src/data-structures/graph/map-graph.ts +29 -57
  435. package/src/data-structures/graph/undirected-graph.ts +67 -82
  436. package/src/data-structures/hash/coordinate-map.ts +0 -4
  437. package/src/data-structures/hash/coordinate-set.ts +0 -4
  438. package/src/data-structures/hash/hash-map.ts +65 -83
  439. package/src/data-structures/hash/hash-table.ts +109 -118
  440. package/src/data-structures/hash/index.ts +0 -1
  441. package/src/data-structures/hash/tree-map.ts +2 -1
  442. package/src/data-structures/hash/tree-set.ts +2 -1
  443. package/src/data-structures/heap/heap.ts +505 -128
  444. package/src/data-structures/heap/max-heap.ts +16 -21
  445. package/src/data-structures/heap/min-heap.ts +16 -22
  446. package/src/data-structures/linked-list/doubly-linked-list.ts +143 -174
  447. package/src/data-structures/linked-list/singly-linked-list.ts +174 -99
  448. package/src/data-structures/linked-list/skip-linked-list.ts +104 -49
  449. package/src/data-structures/matrix/matrix.ts +2 -2
  450. package/src/data-structures/matrix/matrix2d.ts +12 -14
  451. package/src/data-structures/matrix/navigator.ts +4 -4
  452. package/src/data-structures/matrix/vector2d.ts +2 -3
  453. package/src/data-structures/priority-queue/max-priority-queue.ts +15 -46
  454. package/src/data-structures/priority-queue/min-priority-queue.ts +15 -47
  455. package/src/data-structures/priority-queue/priority-queue.ts +7 -350
  456. package/src/data-structures/queue/deque.ts +62 -77
  457. package/src/data-structures/queue/queue.ts +39 -21
  458. package/src/data-structures/stack/stack.ts +13 -9
  459. package/src/data-structures/tree/tree.ts +10 -38
  460. package/src/data-structures/trie/trie.ts +108 -71
  461. package/src/interfaces/binary-tree.ts +7 -4
  462. package/src/interfaces/graph.ts +7 -0
  463. package/src/interfaces/index.ts +1 -8
  464. package/src/types/data-structures/binary-tree/avl-tree.ts +5 -0
  465. package/src/types/data-structures/binary-tree/binary-indexed-tree.ts +1 -0
  466. package/src/types/data-structures/binary-tree/binary-tree.ts +31 -0
  467. package/src/types/data-structures/binary-tree/bst.ts +11 -0
  468. package/src/types/data-structures/binary-tree/index.ts +6 -0
  469. package/src/types/data-structures/binary-tree/rb-tree.ts +8 -0
  470. package/src/types/data-structures/binary-tree/tree-multiset.ts +6 -0
  471. package/src/types/data-structures/graph/abstract-graph.ts +11 -0
  472. package/src/types/data-structures/graph/index.ts +3 -0
  473. package/src/types/data-structures/graph/undirected-graph.ts +1 -0
  474. package/src/types/data-structures/hash/coordinate-map.ts +1 -0
  475. package/src/types/data-structures/hash/coordinate-set.ts +1 -0
  476. package/src/types/data-structures/hash/hash-map.ts +1 -0
  477. package/src/types/data-structures/hash/hash-table.ts +1 -0
  478. package/src/types/data-structures/hash/tree-map.ts +1 -0
  479. package/src/types/data-structures/hash/tree-set.ts +1 -0
  480. package/src/types/data-structures/heap/heap.ts +1 -0
  481. package/src/types/data-structures/heap/index.ts +1 -0
  482. package/src/types/data-structures/heap/max-heap.ts +1 -0
  483. package/src/types/data-structures/heap/min-heap.ts +1 -0
  484. package/src/types/data-structures/index.ts +8 -13
  485. package/src/types/data-structures/linked-list/doubly-linked-list.ts +1 -0
  486. package/src/types/data-structures/linked-list/index.ts +2 -0
  487. package/src/types/data-structures/linked-list/singly-linked-list.ts +1 -0
  488. package/src/types/data-structures/linked-list/skip-linked-list.ts +1 -0
  489. package/src/types/data-structures/matrix/index.ts +1 -0
  490. package/src/types/data-structures/matrix/matrix.ts +1 -0
  491. package/src/types/data-structures/matrix/matrix2d.ts +1 -0
  492. package/src/types/data-structures/matrix/navigator.ts +14 -0
  493. package/src/types/data-structures/matrix/vector2d.ts +1 -0
  494. package/src/types/data-structures/priority-queue/index.ts +3 -0
  495. package/src/types/data-structures/priority-queue/max-priority-queue.ts +1 -0
  496. package/src/types/data-structures/priority-queue/min-priority-queue.ts +1 -0
  497. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  498. package/src/types/data-structures/queue/deque.ts +1 -0
  499. package/src/types/data-structures/queue/index.ts +2 -0
  500. package/src/types/data-structures/queue/queue.ts +1 -0
  501. package/src/types/data-structures/stack/index.ts +1 -0
  502. package/src/types/data-structures/stack/stack.ts +1 -0
  503. package/src/types/data-structures/tree/index.ts +1 -0
  504. package/src/types/data-structures/tree/tree.ts +1 -0
  505. package/src/types/data-structures/trie/index.ts +1 -0
  506. package/src/types/data-structures/trie/trie.ts +1 -0
  507. package/src/types/helpers.ts +11 -1
  508. package/src/types/utils/utils.ts +1 -1
  509. package/src/types/utils/validate-type.ts +2 -2
  510. package/src/utils/utils.ts +7 -0
  511. package/test/config.js +4 -0
  512. package/test/config.ts +1 -0
  513. package/test/integration/avl-tree.test.ts +24 -22
  514. package/test/integration/bst.test.ts +52 -47
  515. package/test/integration/index.html +3 -4
  516. package/test/types/index.js +29 -0
  517. package/test/types/utils/big-o.js +2 -0
  518. package/test/types/utils/big-o.ts +1 -0
  519. package/test/types/utils/index.js +29 -0
  520. package/test/types/utils/index.ts +1 -0
  521. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +184 -23
  522. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +320 -0
  523. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +393 -40
  524. package/test/unit/data-structures/binary-tree/bst.test.ts +506 -48
  525. package/test/unit/data-structures/binary-tree/overall.test.ts +8 -7
  526. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +240 -41
  527. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +296 -215
  528. package/test/unit/data-structures/graph/abstract-graph.test.ts +97 -2
  529. package/test/unit/data-structures/graph/directed-graph.test.ts +76 -31
  530. package/test/unit/data-structures/graph/map-graph.test.ts +93 -12
  531. package/test/unit/data-structures/graph/overall.test.ts +2 -2
  532. package/test/unit/data-structures/graph/undirected-graph.test.ts +93 -3
  533. package/test/unit/data-structures/hash/coordinate-map.test.ts +20 -0
  534. package/test/unit/data-structures/hash/coordinate-set.test.ts +25 -0
  535. package/test/unit/data-structures/hash/hash-map.test.ts +2 -3
  536. package/test/unit/data-structures/hash/hash-table.test.ts +10 -8
  537. package/test/unit/data-structures/heap/heap.test.ts +218 -20
  538. package/test/unit/data-structures/heap/max-heap.test.ts +50 -42
  539. package/test/unit/data-structures/heap/min-heap.test.ts +38 -68
  540. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +86 -27
  541. package/test/unit/data-structures/linked-list/linked-list.test.ts +4 -4
  542. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +71 -27
  543. package/test/unit/data-structures/linked-list/skip-list.test.ts +33 -2
  544. package/test/unit/data-structures/matrix/matrix2d.test.ts +207 -0
  545. package/test/unit/data-structures/matrix/navigator.test.ts +167 -2
  546. package/test/unit/data-structures/matrix/vector2d.test.ts +171 -0
  547. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +10 -11
  548. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -1
  549. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +14 -30
  550. package/test/unit/data-structures/queue/deque.test.ts +303 -23
  551. package/test/unit/data-structures/queue/queue.test.ts +52 -8
  552. package/test/unit/data-structures/tree/tree.test.ts +2 -2
  553. package/test/unit/data-structures/trie/trie.test.ts +743 -13
  554. package/test/utils/big-o.js +212 -0
  555. package/test/utils/big-o.ts +201 -0
  556. package/test/utils/index.js +30 -0
  557. package/test/utils/index.ts +1 -1
  558. package/test/utils/number.js +14 -0
  559. package/tsconfig-base.json +27 -0
  560. package/tsconfig-cjs.json +9 -0
  561. package/tsup.config.js +18 -0
  562. package/umd/bundle.min.js +1 -1
  563. package/umd/bundle.min.js.LICENSE.txt +15 -0
  564. package/umd/bundle.min.js.map +1 -1
  565. package/dist/data-structures/binary-tree/aa-tree.d.ts +0 -2
  566. package/dist/data-structures/binary-tree/aa-tree.js +0 -7
  567. package/dist/data-structures/binary-tree/aa-tree.js.map +0 -1
  568. package/dist/data-structures/binary-tree/abstract-binary-tree.d.ts +0 -527
  569. package/dist/data-structures/binary-tree/abstract-binary-tree.js +0 -1199
  570. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +0 -1
  571. package/dist/data-structures/binary-tree/avl-tree.d.ts +0 -94
  572. package/dist/data-structures/binary-tree/avl-tree.js +0 -336
  573. package/dist/data-structures/binary-tree/avl-tree.js.map +0 -1
  574. package/dist/data-structures/binary-tree/b-tree.d.ts +0 -2
  575. package/dist/data-structures/binary-tree/b-tree.js +0 -7
  576. package/dist/data-structures/binary-tree/b-tree.js.map +0 -1
  577. package/dist/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -46
  578. package/dist/data-structures/binary-tree/binary-indexed-tree.js +0 -74
  579. package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  580. package/dist/data-structures/binary-tree/binary-tree.d.ts +0 -31
  581. package/dist/data-structures/binary-tree/binary-tree.js +0 -41
  582. package/dist/data-structures/binary-tree/binary-tree.js.map +0 -1
  583. package/dist/data-structures/binary-tree/bst.d.ts +0 -133
  584. package/dist/data-structures/binary-tree/bst.js +0 -554
  585. package/dist/data-structures/binary-tree/bst.js.map +0 -1
  586. package/dist/data-structures/binary-tree/index.d.ts +0 -12
  587. package/dist/data-structures/binary-tree/index.js +0 -29
  588. package/dist/data-structures/binary-tree/index.js.map +0 -1
  589. package/dist/data-structures/binary-tree/rb-tree.d.ts +0 -13
  590. package/dist/data-structures/binary-tree/rb-tree.js +0 -28
  591. package/dist/data-structures/binary-tree/rb-tree.js.map +0 -1
  592. package/dist/data-structures/binary-tree/segment-tree.d.ts +0 -83
  593. package/dist/data-structures/binary-tree/segment-tree.js +0 -229
  594. package/dist/data-structures/binary-tree/segment-tree.js.map +0 -1
  595. package/dist/data-structures/binary-tree/splay-tree.d.ts +0 -2
  596. package/dist/data-structures/binary-tree/splay-tree.js +0 -7
  597. package/dist/data-structures/binary-tree/splay-tree.js.map +0 -1
  598. package/dist/data-structures/binary-tree/tree-multiset.d.ts +0 -209
  599. package/dist/data-structures/binary-tree/tree-multiset.js +0 -669
  600. package/dist/data-structures/binary-tree/tree-multiset.js.map +0 -1
  601. package/dist/data-structures/binary-tree/two-three-tree.d.ts +0 -2
  602. package/dist/data-structures/binary-tree/two-three-tree.js +0 -7
  603. package/dist/data-structures/binary-tree/two-three-tree.js.map +0 -1
  604. package/dist/data-structures/graph/abstract-graph.d.ts +0 -332
  605. package/dist/data-structures/graph/abstract-graph.js +0 -925
  606. package/dist/data-structures/graph/abstract-graph.js.map +0 -1
  607. package/dist/data-structures/graph/directed-graph.d.ts +0 -200
  608. package/dist/data-structures/graph/directed-graph.js +0 -423
  609. package/dist/data-structures/graph/directed-graph.js.map +0 -1
  610. package/dist/data-structures/graph/index.js.map +0 -1
  611. package/dist/data-structures/graph/map-graph.d.ts +0 -79
  612. package/dist/data-structures/graph/map-graph.js +0 -112
  613. package/dist/data-structures/graph/map-graph.js.map +0 -1
  614. package/dist/data-structures/graph/undirected-graph.d.ts +0 -127
  615. package/dist/data-structures/graph/undirected-graph.js +0 -253
  616. package/dist/data-structures/graph/undirected-graph.js.map +0 -1
  617. package/dist/data-structures/hash/coordinate-map.d.ts +0 -45
  618. package/dist/data-structures/hash/coordinate-map.js +0 -66
  619. package/dist/data-structures/hash/coordinate-map.js.map +0 -1
  620. package/dist/data-structures/hash/coordinate-set.d.ts +0 -37
  621. package/dist/data-structures/hash/coordinate-set.js +0 -56
  622. package/dist/data-structures/hash/coordinate-set.js.map +0 -1
  623. package/dist/data-structures/hash/hash-map.d.ts +0 -56
  624. package/dist/data-structures/hash/hash-map.js +0 -172
  625. package/dist/data-structures/hash/hash-map.js.map +0 -1
  626. package/dist/data-structures/hash/hash-table.d.ts +0 -106
  627. package/dist/data-structures/hash/hash-table.js +0 -246
  628. package/dist/data-structures/hash/hash-table.js.map +0 -1
  629. package/dist/data-structures/hash/index.d.ts +0 -7
  630. package/dist/data-structures/hash/index.js +0 -24
  631. package/dist/data-structures/hash/index.js.map +0 -1
  632. package/dist/data-structures/hash/pair.d.ts +0 -2
  633. package/dist/data-structures/hash/pair.js +0 -7
  634. package/dist/data-structures/hash/pair.js.map +0 -1
  635. package/dist/data-structures/hash/tree-map.js.map +0 -1
  636. package/dist/data-structures/hash/tree-set.js.map +0 -1
  637. package/dist/data-structures/heap/heap.d.ts +0 -83
  638. package/dist/data-structures/heap/heap.js +0 -158
  639. package/dist/data-structures/heap/heap.js.map +0 -1
  640. package/dist/data-structures/heap/index.js.map +0 -1
  641. package/dist/data-structures/heap/max-heap.d.ts +0 -23
  642. package/dist/data-structures/heap/max-heap.js +0 -31
  643. package/dist/data-structures/heap/max-heap.js.map +0 -1
  644. package/dist/data-structures/heap/min-heap.d.ts +0 -24
  645. package/dist/data-structures/heap/min-heap.js +0 -32
  646. package/dist/data-structures/heap/min-heap.js.map +0 -1
  647. package/dist/data-structures/index.js.map +0 -1
  648. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +0 -234
  649. package/dist/data-structures/linked-list/doubly-linked-list.js +0 -584
  650. package/dist/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  651. package/dist/data-structures/linked-list/index.js.map +0 -1
  652. package/dist/data-structures/linked-list/singly-linked-list.d.ts +0 -157
  653. package/dist/data-structures/linked-list/singly-linked-list.js +0 -449
  654. package/dist/data-structures/linked-list/singly-linked-list.js.map +0 -1
  655. package/dist/data-structures/linked-list/skip-linked-list.d.ts +0 -61
  656. package/dist/data-structures/linked-list/skip-linked-list.js +0 -143
  657. package/dist/data-structures/linked-list/skip-linked-list.js.map +0 -1
  658. package/dist/data-structures/matrix/index.js.map +0 -1
  659. package/dist/data-structures/matrix/matrix.d.ts +0 -21
  660. package/dist/data-structures/matrix/matrix.js.map +0 -1
  661. package/dist/data-structures/matrix/matrix2d.d.ts +0 -108
  662. package/dist/data-structures/matrix/matrix2d.js +0 -201
  663. package/dist/data-structures/matrix/matrix2d.js.map +0 -1
  664. package/dist/data-structures/matrix/navigator.d.ts +0 -52
  665. package/dist/data-structures/matrix/navigator.js.map +0 -1
  666. package/dist/data-structures/matrix/vector2d.d.ts +0 -201
  667. package/dist/data-structures/matrix/vector2d.js +0 -292
  668. package/dist/data-structures/matrix/vector2d.js.map +0 -1
  669. package/dist/data-structures/priority-queue/index.js.map +0 -1
  670. package/dist/data-structures/priority-queue/max-priority-queue.d.ts +0 -15
  671. package/dist/data-structures/priority-queue/max-priority-queue.js +0 -44
  672. package/dist/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  673. package/dist/data-structures/priority-queue/min-priority-queue.d.ts +0 -15
  674. package/dist/data-structures/priority-queue/min-priority-queue.js +0 -45
  675. package/dist/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  676. package/dist/data-structures/priority-queue/priority-queue.d.ts +0 -180
  677. package/dist/data-structures/priority-queue/priority-queue.js +0 -322
  678. package/dist/data-structures/priority-queue/priority-queue.js.map +0 -1
  679. package/dist/data-structures/queue/deque.d.ts +0 -165
  680. package/dist/data-structures/queue/deque.js +0 -277
  681. package/dist/data-structures/queue/deque.js.map +0 -1
  682. package/dist/data-structures/queue/index.js.map +0 -1
  683. package/dist/data-structures/queue/queue.d.ts +0 -107
  684. package/dist/data-structures/queue/queue.js +0 -171
  685. package/dist/data-structures/queue/queue.js.map +0 -1
  686. package/dist/data-structures/stack/index.js.map +0 -1
  687. package/dist/data-structures/stack/stack.d.ts +0 -63
  688. package/dist/data-structures/stack/stack.js +0 -92
  689. package/dist/data-structures/stack/stack.js.map +0 -1
  690. package/dist/data-structures/tree/index.js.map +0 -1
  691. package/dist/data-structures/tree/tree.d.ts +0 -14
  692. package/dist/data-structures/tree/tree.js +0 -61
  693. package/dist/data-structures/tree/tree.js.map +0 -1
  694. package/dist/data-structures/trie/index.js.map +0 -1
  695. package/dist/data-structures/trie/trie.d.ts +0 -61
  696. package/dist/data-structures/trie/trie.js +0 -211
  697. package/dist/data-structures/trie/trie.js.map +0 -1
  698. package/dist/index.js.map +0 -1
  699. package/dist/interfaces/abstract-binary-tree.d.ts +0 -7
  700. package/dist/interfaces/abstract-binary-tree.js +0 -3
  701. package/dist/interfaces/abstract-binary-tree.js.map +0 -1
  702. package/dist/interfaces/abstract-graph.d.ts +0 -5
  703. package/dist/interfaces/abstract-graph.js.map +0 -1
  704. package/dist/interfaces/avl-tree.d.ts +0 -7
  705. package/dist/interfaces/avl-tree.js.map +0 -1
  706. package/dist/interfaces/binary-tree.d.ts +0 -6
  707. package/dist/interfaces/binary-tree.js.map +0 -1
  708. package/dist/interfaces/bst.d.ts +0 -6
  709. package/dist/interfaces/bst.js.map +0 -1
  710. package/dist/interfaces/directed-graph.d.ts +0 -3
  711. package/dist/interfaces/directed-graph.js +0 -3
  712. package/dist/interfaces/directed-graph.js.map +0 -1
  713. package/dist/interfaces/doubly-linked-list.js.map +0 -1
  714. package/dist/interfaces/heap.js.map +0 -1
  715. package/dist/interfaces/index.d.ts +0 -15
  716. package/dist/interfaces/index.js +0 -32
  717. package/dist/interfaces/index.js.map +0 -1
  718. package/dist/interfaces/navigator.js.map +0 -1
  719. package/dist/interfaces/priority-queue.js.map +0 -1
  720. package/dist/interfaces/rb-tree.d.ts +0 -6
  721. package/dist/interfaces/rb-tree.js +0 -3
  722. package/dist/interfaces/rb-tree.js.map +0 -1
  723. package/dist/interfaces/segment-tree.js.map +0 -1
  724. package/dist/interfaces/singly-linked-list.js.map +0 -1
  725. package/dist/interfaces/tree-multiset.d.ts +0 -6
  726. package/dist/interfaces/tree-multiset.js.map +0 -1
  727. package/dist/interfaces/undirected-graph.d.ts +0 -3
  728. package/dist/interfaces/undirected-graph.js.map +0 -1
  729. package/dist/types/data-structures/abstract-binary-tree.d.ts +0 -34
  730. package/dist/types/data-structures/abstract-binary-tree.js +0 -25
  731. package/dist/types/data-structures/abstract-binary-tree.js.map +0 -1
  732. package/dist/types/data-structures/abstract-graph.d.ts +0 -11
  733. package/dist/types/data-structures/abstract-graph.js +0 -3
  734. package/dist/types/data-structures/abstract-graph.js.map +0 -1
  735. package/dist/types/data-structures/avl-tree.d.ts +0 -4
  736. package/dist/types/data-structures/avl-tree.js +0 -3
  737. package/dist/types/data-structures/avl-tree.js.map +0 -1
  738. package/dist/types/data-structures/binary-tree.d.ts +0 -4
  739. package/dist/types/data-structures/binary-tree.js +0 -3
  740. package/dist/types/data-structures/binary-tree.js.map +0 -1
  741. package/dist/types/data-structures/bst.d.ts +0 -13
  742. package/dist/types/data-structures/bst.js +0 -10
  743. package/dist/types/data-structures/bst.js.map +0 -1
  744. package/dist/types/data-structures/directed-graph.js.map +0 -1
  745. package/dist/types/data-structures/doubly-linked-list.js.map +0 -1
  746. package/dist/types/data-structures/hash.js +0 -3
  747. package/dist/types/data-structures/hash.js.map +0 -1
  748. package/dist/types/data-structures/heap.d.ts +0 -3
  749. package/dist/types/data-structures/heap.js.map +0 -1
  750. package/dist/types/data-structures/index.d.ts +0 -16
  751. package/dist/types/data-structures/index.js +0 -33
  752. package/dist/types/data-structures/index.js.map +0 -1
  753. package/dist/types/data-structures/map-graph.js.map +0 -1
  754. package/dist/types/data-structures/navigator.js.map +0 -1
  755. package/dist/types/data-structures/priority-queue.d.ts +0 -7
  756. package/dist/types/data-structures/priority-queue.js.map +0 -1
  757. package/dist/types/data-structures/rb-tree.d.ts +0 -8
  758. package/dist/types/data-structures/rb-tree.js +0 -9
  759. package/dist/types/data-structures/rb-tree.js.map +0 -1
  760. package/dist/types/data-structures/segment-tree.js.map +0 -1
  761. package/dist/types/data-structures/singly-linked-list.js.map +0 -1
  762. package/dist/types/data-structures/tree-multiset.d.ts +0 -4
  763. package/dist/types/data-structures/tree-multiset.js +0 -3
  764. package/dist/types/data-structures/tree-multiset.js.map +0 -1
  765. package/dist/types/helpers.js +0 -3
  766. package/dist/types/helpers.js.map +0 -1
  767. package/dist/types/index.js.map +0 -1
  768. package/dist/types/utils/index.js.map +0 -1
  769. package/dist/types/utils/utils.js.map +0 -1
  770. package/dist/types/utils/validate-type.js.map +0 -1
  771. package/dist/utils/index.js.map +0 -1
  772. package/dist/utils/utils.d.ts +0 -19
  773. package/dist/utils/utils.js +0 -67
  774. package/dist/utils/utils.js.map +0 -1
  775. package/lib/data-structures/binary-tree/aa-tree.d.ts +0 -2
  776. package/lib/data-structures/binary-tree/aa-tree.js +0 -2
  777. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +0 -527
  778. package/lib/data-structures/binary-tree/abstract-binary-tree.js +0 -1193
  779. package/lib/data-structures/binary-tree/avl-tree.d.ts +0 -94
  780. package/lib/data-structures/binary-tree/avl-tree.js +0 -330
  781. package/lib/data-structures/binary-tree/b-tree.d.ts +0 -2
  782. package/lib/data-structures/binary-tree/b-tree.js +0 -2
  783. package/lib/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -46
  784. package/lib/data-structures/binary-tree/binary-indexed-tree.js +0 -69
  785. package/lib/data-structures/binary-tree/binary-tree.d.ts +0 -31
  786. package/lib/data-structures/binary-tree/binary-tree.js +0 -35
  787. package/lib/data-structures/binary-tree/bst.d.ts +0 -133
  788. package/lib/data-structures/binary-tree/bst.js +0 -548
  789. package/lib/data-structures/binary-tree/index.d.ts +0 -12
  790. package/lib/data-structures/binary-tree/index.js +0 -12
  791. package/lib/data-structures/binary-tree/rb-tree.d.ts +0 -13
  792. package/lib/data-structures/binary-tree/rb-tree.js +0 -22
  793. package/lib/data-structures/binary-tree/segment-tree.d.ts +0 -83
  794. package/lib/data-structures/binary-tree/segment-tree.js +0 -223
  795. package/lib/data-structures/binary-tree/splay-tree.d.ts +0 -2
  796. package/lib/data-structures/binary-tree/splay-tree.js +0 -2
  797. package/lib/data-structures/binary-tree/tree-multiset.d.ts +0 -209
  798. package/lib/data-structures/binary-tree/tree-multiset.js +0 -663
  799. package/lib/data-structures/binary-tree/two-three-tree.d.ts +0 -2
  800. package/lib/data-structures/binary-tree/two-three-tree.js +0 -2
  801. package/lib/data-structures/graph/abstract-graph.d.ts +0 -332
  802. package/lib/data-structures/graph/abstract-graph.js +0 -918
  803. package/lib/data-structures/graph/directed-graph.d.ts +0 -200
  804. package/lib/data-structures/graph/directed-graph.js +0 -416
  805. package/lib/data-structures/graph/index.js +0 -4
  806. package/lib/data-structures/graph/map-graph.d.ts +0 -79
  807. package/lib/data-structures/graph/map-graph.js +0 -105
  808. package/lib/data-structures/graph/undirected-graph.d.ts +0 -127
  809. package/lib/data-structures/graph/undirected-graph.js +0 -246
  810. package/lib/data-structures/hash/coordinate-map.d.ts +0 -45
  811. package/lib/data-structures/hash/coordinate-map.js +0 -61
  812. package/lib/data-structures/hash/coordinate-set.d.ts +0 -37
  813. package/lib/data-structures/hash/coordinate-set.js +0 -51
  814. package/lib/data-structures/hash/hash-map.d.ts +0 -56
  815. package/lib/data-structures/hash/hash-map.js +0 -167
  816. package/lib/data-structures/hash/hash-table.d.ts +0 -106
  817. package/lib/data-structures/hash/hash-table.js +0 -240
  818. package/lib/data-structures/hash/index.d.ts +0 -7
  819. package/lib/data-structures/hash/index.js +0 -7
  820. package/lib/data-structures/hash/pair.d.ts +0 -2
  821. package/lib/data-structures/hash/pair.js +0 -2
  822. package/lib/data-structures/hash/tree-map.js +0 -2
  823. package/lib/data-structures/hash/tree-set.js +0 -2
  824. package/lib/data-structures/heap/heap.d.ts +0 -83
  825. package/lib/data-structures/heap/heap.js +0 -152
  826. package/lib/data-structures/heap/index.js +0 -3
  827. package/lib/data-structures/heap/max-heap.d.ts +0 -23
  828. package/lib/data-structures/heap/max-heap.js +0 -26
  829. package/lib/data-structures/heap/min-heap.d.ts +0 -24
  830. package/lib/data-structures/heap/min-heap.js +0 -27
  831. package/lib/data-structures/index.js +0 -11
  832. package/lib/data-structures/linked-list/doubly-linked-list.d.ts +0 -234
  833. package/lib/data-structures/linked-list/doubly-linked-list.js +0 -578
  834. package/lib/data-structures/linked-list/index.js +0 -3
  835. package/lib/data-structures/linked-list/singly-linked-list.d.ts +0 -157
  836. package/lib/data-structures/linked-list/singly-linked-list.js +0 -443
  837. package/lib/data-structures/linked-list/skip-linked-list.d.ts +0 -61
  838. package/lib/data-structures/linked-list/skip-linked-list.js +0 -137
  839. package/lib/data-structures/matrix/index.js +0 -4
  840. package/lib/data-structures/matrix/matrix.d.ts +0 -21
  841. package/lib/data-structures/matrix/matrix.js +0 -24
  842. package/lib/data-structures/matrix/matrix2d.d.ts +0 -108
  843. package/lib/data-structures/matrix/matrix2d.js +0 -196
  844. package/lib/data-structures/matrix/navigator.d.ts +0 -52
  845. package/lib/data-structures/matrix/navigator.js +0 -101
  846. package/lib/data-structures/matrix/vector2d.d.ts +0 -201
  847. package/lib/data-structures/matrix/vector2d.js +0 -287
  848. package/lib/data-structures/priority-queue/max-priority-queue.d.ts +0 -15
  849. package/lib/data-structures/priority-queue/max-priority-queue.js +0 -39
  850. package/lib/data-structures/priority-queue/min-priority-queue.d.ts +0 -15
  851. package/lib/data-structures/priority-queue/min-priority-queue.js +0 -40
  852. package/lib/data-structures/priority-queue/priority-queue.d.ts +0 -180
  853. package/lib/data-structures/priority-queue/priority-queue.js +0 -317
  854. package/lib/data-structures/queue/deque.d.ts +0 -165
  855. package/lib/data-structures/queue/deque.js +0 -270
  856. package/lib/data-structures/queue/queue.d.ts +0 -107
  857. package/lib/data-structures/queue/queue.js +0 -165
  858. package/lib/data-structures/stack/stack.d.ts +0 -63
  859. package/lib/data-structures/stack/stack.js +0 -87
  860. package/lib/data-structures/tree/tree.d.ts +0 -14
  861. package/lib/data-structures/tree/tree.js +0 -56
  862. package/lib/data-structures/trie/trie.d.ts +0 -61
  863. package/lib/data-structures/trie/trie.js +0 -205
  864. package/lib/index.js +0 -4
  865. package/lib/interfaces/abstract-binary-tree.d.ts +0 -7
  866. package/lib/interfaces/abstract-graph.d.ts +0 -5
  867. package/lib/interfaces/avl-tree.d.ts +0 -7
  868. package/lib/interfaces/binary-tree.d.ts +0 -6
  869. package/lib/interfaces/bst.d.ts +0 -6
  870. package/lib/interfaces/directed-graph.d.ts +0 -3
  871. package/lib/interfaces/index.d.ts +0 -15
  872. package/lib/interfaces/index.js +0 -15
  873. package/lib/interfaces/rb-tree.d.ts +0 -6
  874. package/lib/interfaces/tree-multiset.d.ts +0 -6
  875. package/lib/interfaces/undirected-graph.d.ts +0 -3
  876. package/lib/types/data-structures/abstract-binary-tree.d.ts +0 -34
  877. package/lib/types/data-structures/abstract-binary-tree.js +0 -21
  878. package/lib/types/data-structures/abstract-graph.d.ts +0 -11
  879. package/lib/types/data-structures/avl-tree.d.ts +0 -4
  880. package/lib/types/data-structures/binary-tree.d.ts +0 -4
  881. package/lib/types/data-structures/bst.d.ts +0 -13
  882. package/lib/types/data-structures/bst.js +0 -6
  883. package/lib/types/data-structures/directed-graph.js +0 -6
  884. package/lib/types/data-structures/heap.d.ts +0 -3
  885. package/lib/types/data-structures/index.d.ts +0 -16
  886. package/lib/types/data-structures/index.js +0 -16
  887. package/lib/types/data-structures/priority-queue.d.ts +0 -7
  888. package/lib/types/data-structures/rb-tree.d.ts +0 -8
  889. package/lib/types/data-structures/rb-tree.js +0 -5
  890. package/lib/types/data-structures/tree-multiset.d.ts +0 -4
  891. package/lib/types/index.js +0 -3
  892. package/lib/types/utils/index.js +0 -2
  893. package/lib/utils/utils.d.ts +0 -19
  894. package/lib/utils/utils.js +0 -57
  895. package/scripts/rename_clear_files.sh +0 -29
  896. package/src/data-structures/binary-tree/aa-tree.ts +0 -1
  897. package/src/data-structures/binary-tree/abstract-binary-tree.ts +0 -1556
  898. package/src/data-structures/binary-tree/b-tree.ts +0 -1
  899. package/src/data-structures/binary-tree/splay-tree.ts +0 -1
  900. package/src/data-structures/binary-tree/two-three-tree.ts +0 -1
  901. package/src/data-structures/hash/pair.ts +0 -1
  902. package/src/interfaces/abstract-binary-tree.ts +0 -8
  903. package/src/interfaces/abstract-graph.ts +0 -7
  904. package/src/interfaces/avl-tree.ts +0 -8
  905. package/src/interfaces/bst.ts +0 -6
  906. package/src/interfaces/directed-graph.ts +0 -3
  907. package/src/interfaces/rb-tree.ts +0 -6
  908. package/src/interfaces/tree-multiset.ts +0 -7
  909. package/src/interfaces/undirected-graph.ts +0 -3
  910. package/src/types/data-structures/abstract-binary-tree.ts +0 -49
  911. package/src/types/data-structures/abstract-graph.ts +0 -11
  912. package/src/types/data-structures/avl-tree.ts +0 -5
  913. package/src/types/data-structures/binary-tree.ts +0 -5
  914. package/src/types/data-structures/bst.ts +0 -13
  915. package/src/types/data-structures/heap.ts +0 -5
  916. package/src/types/data-structures/navigator.ts +0 -13
  917. package/src/types/data-structures/priority-queue.ts +0 -9
  918. package/src/types/data-structures/rb-tree.ts +0 -8
  919. package/src/types/data-structures/tree-multiset.ts +0 -6
  920. package/test/utils/magnitude.ts +0 -21
  921. /package/dist/{data-structures → cjs/data-structures}/graph/index.d.ts +0 -0
  922. /package/dist/{data-structures → cjs/data-structures}/graph/index.js +0 -0
  923. /package/dist/{data-structures → cjs/data-structures}/hash/tree-map.d.ts +0 -0
  924. /package/dist/{data-structures → cjs/data-structures}/hash/tree-map.js +0 -0
  925. /package/dist/{data-structures → cjs/data-structures}/hash/tree-set.d.ts +0 -0
  926. /package/dist/{data-structures → cjs/data-structures}/hash/tree-set.js +0 -0
  927. /package/dist/{data-structures → cjs/data-structures}/heap/index.d.ts +0 -0
  928. /package/dist/{data-structures → cjs/data-structures}/heap/index.js +0 -0
  929. /package/dist/{data-structures → cjs/data-structures}/index.d.ts +0 -0
  930. /package/dist/{data-structures → cjs/data-structures}/index.js +0 -0
  931. /package/dist/{data-structures → cjs/data-structures}/linked-list/index.d.ts +0 -0
  932. /package/dist/{data-structures → cjs/data-structures}/linked-list/index.js +0 -0
  933. /package/dist/{data-structures → cjs/data-structures}/matrix/index.d.ts +0 -0
  934. /package/dist/{data-structures → cjs/data-structures}/matrix/index.js +0 -0
  935. /package/dist/{data-structures → cjs/data-structures}/matrix/matrix.js +0 -0
  936. /package/dist/{data-structures → cjs/data-structures}/matrix/navigator.js +0 -0
  937. /package/dist/{data-structures → cjs/data-structures}/priority-queue/index.d.ts +0 -0
  938. /package/dist/{data-structures → cjs/data-structures}/priority-queue/index.js +0 -0
  939. /package/dist/{data-structures → cjs/data-structures}/queue/index.d.ts +0 -0
  940. /package/dist/{data-structures → cjs/data-structures}/queue/index.js +0 -0
  941. /package/dist/{data-structures → cjs/data-structures}/stack/index.d.ts +0 -0
  942. /package/dist/{data-structures → cjs/data-structures}/stack/index.js +0 -0
  943. /package/dist/{data-structures → cjs/data-structures}/tree/index.d.ts +0 -0
  944. /package/dist/{data-structures → cjs/data-structures}/tree/index.js +0 -0
  945. /package/dist/{data-structures → cjs/data-structures}/trie/index.d.ts +0 -0
  946. /package/dist/{data-structures → cjs/data-structures}/trie/index.js +0 -0
  947. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  948. /package/dist/{index.js → cjs/index.js} +0 -0
  949. /package/dist/{interfaces → cjs/interfaces}/binary-tree.js +0 -0
  950. /package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.d.ts +0 -0
  951. /package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.js +0 -0
  952. /package/dist/{interfaces → cjs/interfaces}/heap.d.ts +0 -0
  953. /package/dist/{interfaces → cjs/interfaces}/heap.js +0 -0
  954. /package/dist/{interfaces → cjs/interfaces}/navigator.d.ts +0 -0
  955. /package/dist/{interfaces → cjs/interfaces}/navigator.js +0 -0
  956. /package/dist/{interfaces → cjs/interfaces}/priority-queue.d.ts +0 -0
  957. /package/dist/{interfaces → cjs/interfaces}/priority-queue.js +0 -0
  958. /package/dist/{interfaces → cjs/interfaces}/segment-tree.d.ts +0 -0
  959. /package/dist/{interfaces → cjs/interfaces}/segment-tree.js +0 -0
  960. /package/dist/{interfaces → cjs/interfaces}/singly-linked-list.d.ts +0 -0
  961. /package/dist/{interfaces → cjs/interfaces}/singly-linked-list.js +0 -0
  962. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/avl-tree.js +0 -0
  963. /package/dist/{types/data-structures/doubly-linked-list.d.ts → cjs/types/data-structures/binary-tree/binary-indexed-tree.d.ts} +0 -0
  964. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/bst.js +0 -0
  965. /package/dist/{types/data-structures → cjs/types/data-structures/binary-tree}/segment-tree.d.ts +0 -0
  966. /package/dist/{types/data-structures → cjs/types/data-structures/binary-tree}/segment-tree.js +0 -0
  967. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/tree-multiset.js +0 -0
  968. /package/dist/{interfaces → cjs/types/data-structures/graph}/abstract-graph.js +0 -0
  969. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/directed-graph.d.ts +0 -0
  970. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/directed-graph.js +0 -0
  971. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/map-graph.d.ts +0 -0
  972. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/map-graph.js +0 -0
  973. /package/dist/{types/data-structures/singly-linked-list.d.ts → cjs/types/data-structures/graph/undirected-graph.d.ts} +0 -0
  974. /package/dist/{interfaces → cjs/types/data-structures/graph}/undirected-graph.js +0 -0
  975. /package/dist/{types/helpers.d.ts → cjs/types/data-structures/hash/coordinate-map.d.ts} +0 -0
  976. /package/{lib/interfaces/abstract-binary-tree.js → dist/cjs/types/data-structures/hash/coordinate-set.d.ts} +0 -0
  977. /package/{lib/interfaces/abstract-graph.js → dist/cjs/types/data-structures/hash/hash-map.d.ts} +0 -0
  978. /package/{lib/interfaces/avl-tree.js → dist/cjs/types/data-structures/hash/hash-table.d.ts} +0 -0
  979. /package/dist/{types/data-structures/hash.d.ts → cjs/types/data-structures/hash/index.d.ts} +0 -0
  980. /package/{lib/interfaces/binary-tree.js → dist/cjs/types/data-structures/hash/tree-map.d.ts} +0 -0
  981. /package/{lib/interfaces/bst.js → dist/cjs/types/data-structures/hash/tree-set.d.ts} +0 -0
  982. /package/{lib/interfaces → dist/cjs/types/data-structures/heap}/heap.d.ts +0 -0
  983. /package/dist/{types/data-structures → cjs/types/data-structures/heap}/heap.js +0 -0
  984. /package/{lib/interfaces/directed-graph.js → dist/cjs/types/data-structures/heap/max-heap.d.ts} +0 -0
  985. /package/{lib/interfaces/doubly-linked-list.d.ts → dist/cjs/types/data-structures/heap/min-heap.d.ts} +0 -0
  986. /package/{lib/types/data-structures → dist/cjs/types/data-structures/linked-list}/doubly-linked-list.d.ts +0 -0
  987. /package/dist/{types/data-structures → cjs/types/data-structures/linked-list}/doubly-linked-list.js +0 -0
  988. /package/{lib/interfaces → dist/cjs/types/data-structures/linked-list}/singly-linked-list.d.ts +0 -0
  989. /package/dist/{types/data-structures → cjs/types/data-structures/linked-list}/singly-linked-list.js +0 -0
  990. /package/{lib/interfaces/doubly-linked-list.js → dist/cjs/types/data-structures/linked-list/skip-linked-list.d.ts} +0 -0
  991. /package/{lib/interfaces/heap.js → dist/cjs/types/data-structures/matrix/matrix.d.ts} +0 -0
  992. /package/{lib/interfaces/navigator.d.ts → dist/cjs/types/data-structures/matrix/matrix2d.d.ts} +0 -0
  993. /package/dist/{types/data-structures → cjs/types/data-structures/matrix}/navigator.d.ts +0 -0
  994. /package/dist/{types/data-structures → cjs/types/data-structures/matrix}/navigator.js +0 -0
  995. /package/{lib/interfaces/navigator.js → dist/cjs/types/data-structures/matrix/vector2d.d.ts} +0 -0
  996. /package/{lib → dist/cjs/types}/data-structures/priority-queue/index.d.ts +0 -0
  997. /package/{lib/interfaces/priority-queue.d.ts → dist/cjs/types/data-structures/priority-queue/max-priority-queue.d.ts} +0 -0
  998. /package/{lib/interfaces/priority-queue.js → dist/cjs/types/data-structures/priority-queue/min-priority-queue.d.ts} +0 -0
  999. /package/{lib/interfaces/rb-tree.js → dist/cjs/types/data-structures/priority-queue/priority-queue.d.ts} +0 -0
  1000. /package/dist/{types/data-structures → cjs/types/data-structures/priority-queue}/priority-queue.js +0 -0
  1001. /package/{lib/interfaces/segment-tree.d.ts → dist/cjs/types/data-structures/queue/deque.d.ts} +0 -0
  1002. /package/{lib → dist/cjs/types}/data-structures/queue/index.d.ts +0 -0
  1003. /package/{lib/interfaces/segment-tree.js → dist/cjs/types/data-structures/queue/queue.d.ts} +0 -0
  1004. /package/{lib → dist/cjs/types}/data-structures/stack/index.d.ts +0 -0
  1005. /package/{lib/interfaces/singly-linked-list.js → dist/cjs/types/data-structures/stack/stack.d.ts} +0 -0
  1006. /package/{lib → dist/cjs/types}/data-structures/tree/index.d.ts +0 -0
  1007. /package/{lib/interfaces/tree-multiset.js → dist/cjs/types/data-structures/tree/tree.d.ts} +0 -0
  1008. /package/{lib → dist/cjs/types}/data-structures/trie/index.d.ts +0 -0
  1009. /package/{lib/interfaces/undirected-graph.js → dist/cjs/types/data-structures/trie/trie.d.ts} +0 -0
  1010. /package/dist/{types → cjs/types}/index.d.ts +0 -0
  1011. /package/dist/{types → cjs/types}/index.js +0 -0
  1012. /package/dist/{types → cjs/types}/utils/index.d.ts +0 -0
  1013. /package/dist/{types → cjs/types}/utils/index.js +0 -0
  1014. /package/dist/{types → cjs/types}/utils/utils.d.ts +0 -0
  1015. /package/dist/{types → cjs/types}/utils/utils.js +0 -0
  1016. /package/dist/{types → cjs/types}/utils/validate-type.d.ts +0 -0
  1017. /package/dist/{types → cjs/types}/utils/validate-type.js +0 -0
  1018. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  1019. /package/dist/{utils → cjs/utils}/index.js +0 -0
  1020. /package/{lib → dist/mjs}/data-structures/graph/index.d.ts +0 -0
  1021. /package/{lib → dist/mjs}/data-structures/hash/tree-map.d.ts +0 -0
  1022. /package/{lib → dist/mjs}/data-structures/hash/tree-set.d.ts +0 -0
  1023. /package/{lib → dist/mjs}/data-structures/heap/index.d.ts +0 -0
  1024. /package/{lib → dist/mjs}/data-structures/index.d.ts +0 -0
  1025. /package/{lib → dist/mjs}/data-structures/linked-list/index.d.ts +0 -0
  1026. /package/{lib → dist/mjs}/data-structures/matrix/index.d.ts +0 -0
  1027. /package/{lib/data-structures/priority-queue/index.js → dist/mjs/data-structures/priority-queue/index.d.ts} +0 -0
  1028. /package/{lib/data-structures/queue/index.js → dist/mjs/data-structures/queue/index.d.ts} +0 -0
  1029. /package/{lib/data-structures/stack/index.js → dist/mjs/data-structures/stack/index.d.ts} +0 -0
  1030. /package/{lib/data-structures/tree/index.js → dist/mjs/data-structures/tree/index.d.ts} +0 -0
  1031. /package/{lib/data-structures/trie/index.js → dist/mjs/data-structures/trie/index.d.ts} +0 -0
  1032. /package/{lib → dist/mjs}/index.d.ts +0 -0
  1033. /package/{lib/types/data-structures/abstract-graph.js → dist/mjs/interfaces/doubly-linked-list.d.ts} +0 -0
  1034. /package/{lib/types/data-structures/avl-tree.js → dist/mjs/interfaces/heap.d.ts} +0 -0
  1035. /package/{lib/types/data-structures/binary-tree.js → dist/mjs/interfaces/navigator.d.ts} +0 -0
  1036. /package/{lib/types/data-structures/doubly-linked-list.js → dist/mjs/interfaces/priority-queue.d.ts} +0 -0
  1037. /package/{lib/types/data-structures/hash.js → dist/mjs/interfaces/segment-tree.d.ts} +0 -0
  1038. /package/{lib/types/data-structures → dist/mjs/interfaces}/singly-linked-list.d.ts +0 -0
  1039. /package/{lib/types/data-structures/heap.js → dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.d.ts} +0 -0
  1040. /package/{lib/types/data-structures → dist/mjs/types/data-structures/binary-tree}/segment-tree.d.ts +0 -0
  1041. /package/{lib/types/data-structures → dist/mjs/types/data-structures/graph}/directed-graph.d.ts +0 -0
  1042. /package/{lib/types/data-structures → dist/mjs/types/data-structures/graph}/map-graph.d.ts +0 -0
  1043. /package/{lib/types/data-structures/map-graph.js → dist/mjs/types/data-structures/graph/undirected-graph.d.ts} +0 -0
  1044. /package/{lib/types/data-structures/navigator.js → dist/mjs/types/data-structures/hash/coordinate-map.d.ts} +0 -0
  1045. /package/{lib/types/data-structures/priority-queue.js → dist/mjs/types/data-structures/hash/coordinate-set.d.ts} +0 -0
  1046. /package/{lib/types/data-structures/segment-tree.js → dist/mjs/types/data-structures/hash/hash-map.d.ts} +0 -0
  1047. /package/{lib/types/data-structures/singly-linked-list.js → dist/mjs/types/data-structures/hash/hash-table.d.ts} +0 -0
  1048. /package/{lib/types/data-structures/hash.d.ts → dist/mjs/types/data-structures/hash/index.d.ts} +0 -0
  1049. /package/{lib/types/data-structures/tree-multiset.js → dist/mjs/types/data-structures/hash/tree-map.d.ts} +0 -0
  1050. /package/{lib/types/helpers.d.ts → dist/mjs/types/data-structures/hash/tree-set.d.ts} +0 -0
  1051. /package/{lib/types/helpers.js → dist/mjs/types/data-structures/heap/heap.d.ts} +0 -0
  1052. /package/{lib/types/utils/utils.js → dist/mjs/types/data-structures/heap/max-heap.d.ts} +0 -0
  1053. /package/{lib/types/utils/validate-type.js → dist/mjs/types/data-structures/heap/min-heap.d.ts} +0 -0
  1054. /package/{src/types/data-structures/doubly-linked-list.ts → dist/mjs/types/data-structures/linked-list/doubly-linked-list.d.ts} +0 -0
  1055. /package/{src/types/data-structures/singly-linked-list.ts → dist/mjs/types/data-structures/linked-list/singly-linked-list.d.ts} +0 -0
  1056. /package/{lib/types/data-structures → dist/mjs/types/data-structures/matrix}/navigator.d.ts +0 -0
  1057. /package/{lib → dist/mjs}/types/index.d.ts +0 -0
  1058. /package/{lib → dist/mjs}/types/utils/index.d.ts +0 -0
  1059. /package/{lib → dist/mjs}/types/utils/utils.d.ts +0 -0
  1060. /package/{lib → dist/mjs}/types/utils/validate-type.d.ts +0 -0
  1061. /package/{lib → dist/mjs}/utils/index.d.ts +0 -0
  1062. /package/src/types/data-structures/{segment-tree.ts → binary-tree/segment-tree.ts} +0 -0
  1063. /package/src/types/data-structures/{directed-graph.ts → graph/directed-graph.ts} +0 -0
  1064. /package/src/types/data-structures/{map-graph.ts → graph/map-graph.ts} +0 -0
  1065. /package/src/types/data-structures/{hash.ts → hash/index.ts} +0 -0
  1066. /package/{lib/utils/index.js → test/types/index.ts} +0 -0
@@ -1,85 +1,53 @@
1
1
  /**
2
2
  * data-structure-typed
3
3
  *
4
- * @author Tyler Zeng
5
- * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
4
+ * @author Kirk Qi
5
+ * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
8
  import {arrayRemove, uuidV4} from '../../utils';
9
9
  import {PriorityQueue} from '../priority-queue';
10
10
  import type {DijkstraResult, VertexKey} from '../../types';
11
- import {IAbstractGraph} from '../../interfaces';
11
+ import {IGraph} from '../../interfaces';
12
+ import {Queue} from '../queue';
12
13
 
13
14
  export abstract class AbstractVertex<V = any> {
15
+ key: VertexKey;
16
+ value: V | undefined;
17
+
14
18
  /**
15
19
  * The function is a protected constructor that takes an key and an optional value as parameters.
16
20
  * @param {VertexKey} key - The `key` parameter is of type `VertexKey` and represents the identifier of the vertex. It is
17
21
  * used to uniquely identify the vertex object.
18
- * @param {V} [val] - The parameter "val" is an optional parameter of type V. It is used to assign a value to the
22
+ * @param {V} [value] - The parameter "value" is an optional parameter of type V. It is used to assign a value to the
19
23
  * vertex. If no value is provided, it will be set to undefined.
20
24
  */
21
- protected constructor(key: VertexKey, val?: V) {
22
- this._key = key;
23
- this._val = val;
24
- }
25
-
26
- private _key: VertexKey;
27
-
28
- get key(): VertexKey {
29
- return this._key;
30
- }
31
-
32
- set key(v: VertexKey) {
33
- this._key = v;
25
+ protected constructor(key: VertexKey, value?: V) {
26
+ this.key = key;
27
+ this.value = value;
34
28
  }
35
29
 
36
- private _val: V | undefined;
37
-
38
- get val(): V | undefined {
39
- return this._val;
40
- }
41
-
42
- set val(value: V | undefined) {
43
- this._val = value;
44
- }
45
30
  }
46
31
 
47
- export abstract class AbstractEdge<V = any> {
32
+ export abstract class AbstractEdge<E = any> {
33
+ value: E | undefined;
34
+ weight: number;
35
+
48
36
  /**
49
37
  * The above function is a protected constructor that initializes the weight, value, and hash code properties of an
50
38
  * object.
51
39
  * @param {number} [weight] - The `weight` parameter is an optional number that represents the weight of the object. If
52
40
  * a value is provided, it will be assigned to the `_weight` property. If no value is provided, the default value of 1
53
41
  * will be assigned.
54
- * @param {V} [val] - The `val` parameter is of type `V`, which means it can be any type. It is an optional parameter,
42
+ * @param {VO} [value] - The `value` parameter is of type `VO`, which means it can be any type. It is an optional parameter,
55
43
  * meaning it can be omitted when creating an instance of the class.
56
44
  */
57
- protected constructor(weight?: number, val?: V) {
58
- this._weight = weight !== undefined ? weight : 1;
59
- this._val = val;
45
+ protected constructor(weight?: number, value?: E) {
46
+ this.weight = weight !== undefined ? weight : 1;
47
+ this.value = value;
60
48
  this._hashCode = uuidV4();
61
49
  }
62
50
 
63
- private _val: V | undefined;
64
-
65
- get val(): V | undefined {
66
- return this._val;
67
- }
68
-
69
- set val(value: V | undefined) {
70
- this._val = value;
71
- }
72
-
73
- private _weight: number;
74
-
75
- get weight(): number {
76
- return this._weight;
77
- }
78
-
79
- set weight(v: number) {
80
- this._weight = v;
81
- }
82
-
83
51
  protected _hashCode: string;
84
52
 
85
53
  get hashCode(): string {
@@ -90,25 +58,17 @@ export abstract class AbstractEdge<V = any> {
90
58
  * In TypeScript, a subclass inherits the interface implementation of its parent class, without needing to implement the same interface again in the subclass. This behavior differs from Java's approach. In Java, if a parent class implements an interface, the subclass needs to explicitly implement the same interface, even if the parent class has already implemented it.
91
59
  * This means that using abstract methods in the parent class cannot constrain the grandchild classes. Defining methods within an interface also cannot constrain the descendant classes. When inheriting from this class, developers need to be aware that this method needs to be overridden.
92
60
  */
93
-
94
- /**
95
- * The function sets the value of the _hashCode property to the provided string.
96
- * @param {string} v - The parameter "v" is of type string and represents the value that will be assigned to the
97
- * "_hashCode" property.
98
- */
99
- protected _setHashCode(v: string) {
100
- this._hashCode = v;
101
- }
102
61
  }
103
62
 
104
63
  export abstract class AbstractGraph<
105
- V extends AbstractVertex<any> = AbstractVertex<any>,
106
- E extends AbstractEdge<any> = AbstractEdge<any>
107
- > implements IAbstractGraph<V, E>
108
- {
109
- private _vertices: Map<VertexKey, V> = new Map<VertexKey, V>();
110
-
111
- get vertices(): Map<VertexKey, V> {
64
+ V = any,
65
+ E = any,
66
+ VO extends AbstractVertex<V> = AbstractVertex<V>,
67
+ EO extends AbstractEdge<E> = AbstractEdge<E>
68
+ > implements IGraph<V, E, VO, EO> {
69
+ protected _vertices: Map<VertexKey, VO> = new Map<VertexKey, VO>();
70
+
71
+ get vertices(): Map<VertexKey, VO> {
112
72
  return this._vertices;
113
73
  }
114
74
 
@@ -116,9 +76,9 @@ export abstract class AbstractGraph<
116
76
  * In TypeScript, a subclass inherits the interface implementation of its parent class, without needing to implement the same interface again in the subclass. This behavior differs from Java's approach. In Java, if a parent class implements an interface, the subclass needs to explicitly implement the same interface, even if the parent class has already implemented it.
117
77
  * This means that using abstract methods in the parent class cannot constrain the grandchild classes. Defining methods within an interface also cannot constrain the descendant classes. When inheriting from this class, developers need to be aware that this method needs to be overridden.
118
78
  * @param key
119
- * @param val
79
+ * @param value
120
80
  */
121
- abstract createVertex(key: VertexKey, val?: V): V;
81
+ abstract createVertex(key: VertexKey, value?: V): VO;
122
82
 
123
83
  /**
124
84
  * In TypeScript, a subclass inherits the interface implementation of its parent class, without needing to implement the same interface again in the subclass. This behavior differs from Java's approach. In Java, if a parent class implements an interface, the subclass needs to explicitly implement the same interface, even if the parent class has already implemented it.
@@ -126,23 +86,23 @@ export abstract class AbstractGraph<
126
86
  * @param srcOrV1
127
87
  * @param destOrV2
128
88
  * @param weight
129
- * @param val
89
+ * @param value
130
90
  */
131
- abstract createEdge(srcOrV1: VertexKey | string, destOrV2: VertexKey | string, weight?: number, val?: E): E;
91
+ abstract createEdge(srcOrV1: VertexKey, destOrV2: VertexKey, weight?: number, value?: E): EO;
132
92
 
133
- abstract removeEdge(edge: E): E | null;
93
+ abstract deleteEdge(edge: EO): EO | null;
134
94
 
135
- abstract getEdge(srcOrKey: V | VertexKey, destOrKey: V | VertexKey): E | null;
95
+ abstract getEdge(srcOrKey: VO | VertexKey, destOrKey: VO | VertexKey): EO | null;
136
96
 
137
- abstract degreeOf(vertexOrKey: V | VertexKey): number;
97
+ abstract degreeOf(vertexOrKey: VO | VertexKey): number;
138
98
 
139
- abstract edgeSet(): E[];
99
+ abstract edgeSet(): EO[];
140
100
 
141
- abstract edgesOf(vertexOrKey: V | VertexKey): E[];
101
+ abstract edgesOf(vertexOrKey: VO | VertexKey): EO[];
142
102
 
143
- abstract getNeighbors(vertexOrKey: V | VertexKey): V[];
103
+ abstract getNeighbors(vertexOrKey: VO | VertexKey): VO[];
144
104
 
145
- abstract getEndsOfEdge(edge: E): [V, V] | null;
105
+ abstract getEndsOfEdge(edge: EO): [VO, VO] | null;
146
106
 
147
107
  /**
148
108
  * The function "getVertex" returns the vertex with the specified ID or null if it doesn't exist.
@@ -151,77 +111,77 @@ export abstract class AbstractGraph<
151
111
  * @returns The method `getVertex` returns the vertex with the specified `vertexKey` if it exists in the `_vertices`
152
112
  * map. If the vertex does not exist, it returns `null`.
153
113
  */
154
- getVertex(vertexKey: VertexKey): V | null {
114
+ getVertex(vertexKey: VertexKey): VO | null {
155
115
  return this._vertices.get(vertexKey) || null;
156
116
  }
157
117
 
158
118
  /**
159
119
  * The function checks if a vertex exists in a graph.
160
- * @param {V | VertexKey} vertexOrKey - The parameter `vertexOrKey` can be either a vertex object (`V`) or a vertex ID
120
+ * @param {VO | VertexKey} vertexOrKey - The parameter `vertexOrKey` can be either a vertex object (`VO`) or a vertex ID
161
121
  * (`VertexKey`).
162
122
  * @returns a boolean value.
163
123
  */
164
- hasVertex(vertexOrKey: V | VertexKey): boolean {
124
+ hasVertex(vertexOrKey: VO | VertexKey): boolean {
165
125
  return this._vertices.has(this._getVertexKey(vertexOrKey));
166
126
  }
167
127
 
168
- addVertex(vertex: V): boolean;
128
+ addVertex(vertex: VO): boolean;
169
129
 
170
- addVertex(key: VertexKey, val?: V['val']): boolean;
130
+ addVertex(key: VertexKey, value?: V): boolean;
171
131
 
172
- addVertex(keyOrVertex: VertexKey | V, val?: V['val']): boolean {
132
+ addVertex(keyOrVertex: VertexKey | VO, value?: V): boolean {
173
133
  if (keyOrVertex instanceof AbstractVertex) {
174
134
  return this._addVertexOnly(keyOrVertex);
175
135
  } else {
176
- const newVertex = this.createVertex(keyOrVertex, val);
136
+ const newVertex = this.createVertex(keyOrVertex, value);
177
137
  return this._addVertexOnly(newVertex);
178
138
  }
179
139
  }
180
140
 
181
141
  /**
182
- * The `removeVertex` function removes a vertex from a graph by its ID or by the vertex object itself.
183
- * @param {V | VertexKey} vertexOrKey - The parameter `vertexOrKey` can be either a vertex object (`V`) or a vertex ID
142
+ * The `deleteVertex` function removes a vertex from a graph by its ID or by the vertex object itself.
143
+ * @param {VO | VertexKey} vertexOrKey - The parameter `vertexOrKey` can be either a vertex object (`VO`) or a vertex ID
184
144
  * (`VertexKey`).
185
145
  * @returns The method is returning a boolean value.
186
146
  */
187
- removeVertex(vertexOrKey: V | VertexKey): boolean {
147
+ deleteVertex(vertexOrKey: VO | VertexKey): boolean {
188
148
  const vertexKey = this._getVertexKey(vertexOrKey);
189
149
  return this._vertices.delete(vertexKey);
190
150
  }
191
151
 
192
152
  /**
193
153
  * The function removes all vertices from a graph and returns a boolean indicating if any vertices were removed.
194
- * @param {V[] | VertexKey[]} vertices - The `vertices` parameter can be either an array of vertices (`V[]`) or an array
154
+ * @param {VO[] | VertexKey[]} vertices - The `vertices` parameter can be either an array of vertices (`VO[]`) or an array
195
155
  * of vertex IDs (`VertexKey[]`).
196
156
  * @returns a boolean value. It returns true if at least one vertex was successfully removed, and false if no vertices
197
157
  * were removed.
198
158
  */
199
- removeAllVertices(vertices: V[] | VertexKey[]): boolean {
159
+ removeManyVertices(vertices: VO[] | VertexKey[]): boolean {
200
160
  const removed: boolean[] = [];
201
161
  for (const v of vertices) {
202
- removed.push(this.removeVertex(v));
162
+ removed.push(this.deleteVertex(v));
203
163
  }
204
164
  return removed.length > 0;
205
165
  }
206
166
 
207
167
  /**
208
168
  * The function checks if there is an edge between two vertices and returns a boolean value indicating the result.
209
- * @param {VertexKey | V} v1 - The parameter v1 can be either a VertexKey or a V. A VertexKey represents the unique
210
- * identifier of a vertex in a graph, while V represents the type of the vertex object itself.
211
- * @param {VertexKey | V} v2 - The parameter `v2` represents the second vertex in the edge. It can be either a
212
- * `VertexKey` or a `V` type, which represents the type of the vertex.
169
+ * @param {VertexKey | VO} v1 - The parameter v1 can be either a VertexKey or a VO. A VertexKey represents the unique
170
+ * identifier of a vertex in a graph, while VO represents the type of the vertex object itself.
171
+ * @param {VertexKey | VO} v2 - The parameter `v2` represents the second vertex in the edge. It can be either a
172
+ * `VertexKey` or a `VO` type, which represents the type of the vertex.
213
173
  * @returns A boolean value is being returned.
214
174
  */
215
- hasEdge(v1: VertexKey | V, v2: VertexKey | V): boolean {
175
+ hasEdge(v1: VertexKey | VO, v2: VertexKey | VO): boolean {
216
176
  const edge = this.getEdge(v1, v2);
217
177
  return !!edge;
218
178
  }
219
179
 
220
- addEdge(edge: E): boolean;
180
+ addEdge(edge: EO): boolean;
221
181
 
222
- addEdge(src: V | VertexKey, dest: V | VertexKey, weight?: number, val?: E['val']): boolean;
182
+ addEdge(src: VO | VertexKey, dest: VO | VertexKey, weight?: number, value?: E): boolean;
223
183
 
224
- addEdge(srcOrEdge: V | VertexKey | E, dest?: V | VertexKey, weight?: number, val?: E['val']): boolean {
184
+ addEdge(srcOrEdge: VO | VertexKey | EO, dest?: VO | VertexKey, weight?: number, value?: E): boolean {
225
185
  if (srcOrEdge instanceof AbstractEdge) {
226
186
  return this._addEdgeOnly(srcOrEdge);
227
187
  } else {
@@ -229,7 +189,7 @@ export abstract class AbstractGraph<
229
189
  if (!(this.hasVertex(srcOrEdge) && this.hasVertex(dest))) return false;
230
190
  if (srcOrEdge instanceof AbstractVertex) srcOrEdge = srcOrEdge.key;
231
191
  if (dest instanceof AbstractVertex) dest = dest.key;
232
- const newEdge = this.createEdge(srcOrEdge, dest, weight, val);
192
+ const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
233
193
  return this._addEdgeOnly(newEdge);
234
194
  } else {
235
195
  throw new Error('dest must be a Vertex or vertex key while srcOrEdge is an Edge');
@@ -239,16 +199,16 @@ export abstract class AbstractGraph<
239
199
 
240
200
  /**
241
201
  * The function sets the weight of an edge between two vertices in a graph.
242
- * @param {VertexKey | V} srcOrKey - The `srcOrKey` parameter can be either a `VertexKey` or a `V` object. It represents
202
+ * @param {VertexKey | VO} srcOrKey - The `srcOrKey` parameter can be either a `VertexKey` or a `VO` object. It represents
243
203
  * the source vertex of the edge.
244
- * @param {VertexKey | V} destOrKey - The `destOrKey` parameter represents the destination vertex of the edge. It can be
245
- * either a `VertexKey` or a vertex object `V`.
204
+ * @param {VertexKey | VO} destOrKey - The `destOrKey` parameter represents the destination vertex of the edge. It can be
205
+ * either a `VertexKey` or a vertex object `VO`.
246
206
  * @param {number} weight - The weight parameter represents the weight of the edge between the source vertex (srcOrKey)
247
207
  * and the destination vertex (destOrKey).
248
208
  * @returns a boolean value. If the edge exists between the source and destination vertices, the function will update
249
209
  * the weight of the edge and return true. If the edge does not exist, the function will return false.
250
210
  */
251
- setEdgeWeight(srcOrKey: VertexKey | V, destOrKey: VertexKey | V, weight: number): boolean {
211
+ setEdgeWeight(srcOrKey: VertexKey | VO, destOrKey: VertexKey | VO, weight: number): boolean {
252
212
  const edge = this.getEdge(srcOrKey, destOrKey);
253
213
  if (edge) {
254
214
  edge.weight = weight;
@@ -260,20 +220,20 @@ export abstract class AbstractGraph<
260
220
 
261
221
  /**
262
222
  * The function `getAllPathsBetween` finds all paths between two vertices in a graph using depth-first search.
263
- * @param {V | VertexKey} v1 - The parameter `v1` represents either a vertex object (`V`) or a vertex ID (`VertexKey`).
223
+ * @param {VO | VertexKey} v1 - The parameter `v1` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
264
224
  * It is the starting vertex for finding paths.
265
- * @param {V | VertexKey} v2 - The parameter `v2` represents either a vertex object (`V`) or a vertex ID (`VertexKey`).
266
- * @returns The function `getAllPathsBetween` returns an array of arrays of vertices (`V[][]`).
225
+ * @param {VO | VertexKey} v2 - The parameter `v2` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
226
+ * @returns The function `getAllPathsBetween` returns an array of arrays of vertices (`VO[][]`).
267
227
  */
268
- getAllPathsBetween(v1: V | VertexKey, v2: V | VertexKey): V[][] {
269
- const paths: V[][] = [];
228
+ getAllPathsBetween(v1: VO | VertexKey, v2: VO | VertexKey): VO[][] {
229
+ const paths: VO[][] = [];
270
230
  const vertex1 = this._getVertex(v1);
271
231
  const vertex2 = this._getVertex(v2);
272
232
  if (!(vertex1 && vertex2)) {
273
233
  return [];
274
234
  }
275
235
 
276
- const dfs = (cur: V, dest: V, visiting: Map<V, boolean>, path: V[]) => {
236
+ const dfs = (cur: VO, dest: VO, visiting: Map<VO, boolean>, path: VO[]) => {
277
237
  visiting.set(cur, true);
278
238
 
279
239
  if (cur === dest) {
@@ -285,23 +245,23 @@ export abstract class AbstractGraph<
285
245
  if (!visiting.get(neighbor)) {
286
246
  path.push(neighbor);
287
247
  dfs(neighbor, dest, visiting, path);
288
- arrayRemove(path, (vertex: V) => vertex === neighbor);
248
+ arrayRemove(path, (vertex: VO) => vertex === neighbor);
289
249
  }
290
250
  }
291
251
 
292
252
  visiting.set(cur, false);
293
253
  };
294
254
 
295
- dfs(vertex1, vertex2, new Map<V, boolean>(), []);
255
+ dfs(vertex1, vertex2, new Map<VO, boolean>(), []);
296
256
  return paths;
297
257
  }
298
258
 
299
259
  /**
300
260
  * The function calculates the sum of weights along a given path.
301
- * @param {V[]} path - An array of vertices (V) representing a path in a graph.
261
+ * @param {VO[]} path - An array of vertices (VO) representing a path in a graph.
302
262
  * @returns The function `getPathSumWeight` returns the sum of the weights of the edges in the given path.
303
263
  */
304
- getPathSumWeight(path: V[]): number {
264
+ getPathSumWeight(path: VO[]): number {
305
265
  let sum = 0;
306
266
  for (let i = 0; i < path.length; i++) {
307
267
  sum += this.getEdge(path[i], path[i + 1])?.weight || 0;
@@ -312,8 +272,8 @@ export abstract class AbstractGraph<
312
272
  /**
313
273
  * The function `getMinCostBetween` calculates the minimum cost between two vertices in a graph, either based on edge
314
274
  * weights or using a breadth-first search algorithm.
315
- * @param {V | VertexKey} v1 - The parameter `v1` represents the starting vertex or its ID.
316
- * @param {V | VertexKey} v2 - The parameter `v2` represents the destination vertex or its ID. It is the vertex to which
275
+ * @param {VO | VertexKey} v1 - The parameter `v1` represents the starting vertex or its ID.
276
+ * @param {VO | VertexKey} v2 - The parameter `v2` represents the destination vertex or its ID. It is the vertex to which
317
277
  * you want to find the minimum cost or weight from the source vertex `v1`.
318
278
  * @param {boolean} [isWeight] - isWeight is an optional parameter that indicates whether the graph edges have weights.
319
279
  * If isWeight is set to true, the function will calculate the minimum cost between v1 and v2 based on the weights of
@@ -323,7 +283,7 @@ export abstract class AbstractGraph<
323
283
  * vertices. If `isWeight` is `false` or not provided, it uses a breadth-first search (BFS) algorithm to calculate the
324
284
  * minimum number of
325
285
  */
326
- getMinCostBetween(v1: V | VertexKey, v2: V | VertexKey, isWeight?: boolean): number | null {
286
+ getMinCostBetween(v1: VO | VertexKey, v2: VO | VertexKey, isWeight?: boolean): number | null {
327
287
  if (isWeight === undefined) isWeight = false;
328
288
 
329
289
  if (isWeight) {
@@ -341,12 +301,12 @@ export abstract class AbstractGraph<
341
301
  return null;
342
302
  }
343
303
 
344
- const visited: Map<V, boolean> = new Map();
345
- const queue: V[] = [vertex1];
304
+ const visited: Map<VO, boolean> = new Map();
305
+ const queue = new Queue<VO>([vertex1]);
346
306
  visited.set(vertex1, true);
347
307
  let cost = 0;
348
- while (queue.length > 0) {
349
- for (let i = 0; i < queue.length; i++) {
308
+ while (queue.size > 0) {
309
+ for (let i = 0; i < queue.size; i++) {
350
310
  const cur = queue.shift();
351
311
  if (cur === vertex2) {
352
312
  return cost;
@@ -371,17 +331,17 @@ export abstract class AbstractGraph<
371
331
  /**
372
332
  * The function `getMinPathBetween` returns the minimum path between two vertices in a graph, either based on weight or
373
333
  * using a breadth-first search algorithm.
374
- * @param {V | VertexKey} v1 - The parameter `v1` represents the starting vertex of the path. It can be either a vertex
375
- * object (`V`) or a vertex ID (`VertexKey`).
376
- * @param {V | VertexKey} v2 - V | VertexKey - The second vertex or vertex ID between which we want to find the minimum
334
+ * @param {VO | VertexKey} v1 - The parameter `v1` represents the starting vertex of the path. It can be either a vertex
335
+ * object (`VO`) or a vertex ID (`VertexKey`).
336
+ * @param {VO | VertexKey} v2 - VO | VertexKey - The second vertex or vertex ID between which we want to find the minimum
377
337
  * path.
378
338
  * @param {boolean} [isWeight] - A boolean flag indicating whether to consider the weight of edges in finding the
379
339
  * minimum path. If set to true, the function will use Dijkstra's algorithm to find the minimum weighted path. If set
380
340
  * to false, the function will use breadth-first search (BFS) to find the minimum path.
381
- * @returns The function `getMinPathBetween` returns an array of vertices (`V[]`) representing the minimum path between
341
+ * @returns The function `getMinPathBetween` returns an array of vertices (`VO[]`) representing the minimum path between
382
342
  * two vertices (`v1` and `v2`). If there is no path between the vertices, it returns `null`.
383
343
  */
384
- getMinPathBetween(v1: V | VertexKey, v2: V | VertexKey, isWeight?: boolean): V[] | null {
344
+ getMinPathBetween(v1: VO | VertexKey, v2: VO | VertexKey, isWeight?: boolean): VO[] | null {
385
345
  if (isWeight === undefined) isWeight = false;
386
346
 
387
347
  if (isWeight) {
@@ -400,14 +360,14 @@ export abstract class AbstractGraph<
400
360
  return allPaths[minIndex] || null;
401
361
  } else {
402
362
  // BFS
403
- let minPath: V[] = [];
363
+ let minPath: VO[] = [];
404
364
  const vertex1 = this._getVertex(v1);
405
365
  const vertex2 = this._getVertex(v2);
406
366
  if (!(vertex1 && vertex2)) {
407
367
  return [];
408
368
  }
409
369
 
410
- const dfs = (cur: V, dest: V, visiting: Map<V, boolean>, path: V[]) => {
370
+ const dfs = (cur: VO, dest: VO, visiting: Map<VO, boolean>, path: VO[]) => {
411
371
  visiting.set(cur, true);
412
372
 
413
373
  if (cur === dest) {
@@ -420,29 +380,29 @@ export abstract class AbstractGraph<
420
380
  if (!visiting.get(neighbor)) {
421
381
  path.push(neighbor);
422
382
  dfs(neighbor, dest, visiting, path);
423
- arrayRemove(path, (vertex: V) => vertex === neighbor);
383
+ arrayRemove(path, (vertex: VO) => vertex === neighbor);
424
384
  }
425
385
  }
426
386
 
427
387
  visiting.set(cur, false);
428
388
  };
429
389
 
430
- dfs(vertex1, vertex2, new Map<V, boolean>(), []);
390
+ dfs(vertex1, vertex2, new Map<VO, boolean>(), []);
431
391
  return minPath;
432
392
  }
433
393
  }
434
394
 
435
395
  /**
436
- * Dijkstra algorithm time: O(VE) space: O(V + E)
396
+ * Dijkstra algorithm time: O(VE) space: O(VO + EO)
437
397
  * /
438
398
 
439
399
  /**
440
- * Dijkstra algorithm time: O(VE) space: O(V + E)
400
+ * Dijkstra algorithm time: O(VE) space: O(VO + EO)
441
401
  * The function `dijkstraWithoutHeap` implements Dijkstra's algorithm to find the shortest path between two vertices in
442
402
  * a graph without using a heap data structure.
443
- * @param {V | VertexKey} src - The source vertex from which to start the Dijkstra's algorithm. It can be either a
403
+ * @param {VO | VertexKey} src - The source vertex from which to start the Dijkstra's algorithm. It can be either a
444
404
  * vertex object or a vertex ID.
445
- * @param {V | VertexKey | null} [dest] - The `dest` parameter in the `dijkstraWithoutHeap` function is an optional
405
+ * @param {VO | VertexKey | null} [dest] - The `dest` parameter in the `dijkstraWithoutHeap` function is an optional
446
406
  * parameter that specifies the destination vertex for the Dijkstra algorithm. It can be either a vertex object or its
447
407
  * identifier. If no destination is provided, the value is set to `null`.
448
408
  * @param {boolean} [getMinDist] - The `getMinDist` parameter is a boolean flag that determines whether the minimum
@@ -451,27 +411,27 @@ export abstract class AbstractGraph<
451
411
  * @param {boolean} [genPaths] - The `genPaths` parameter is a boolean flag that determines whether or not to generate
452
412
  * paths in the Dijkstra algorithm. If `genPaths` is set to `true`, the algorithm will calculate and return the
453
413
  * shortest paths from the source vertex to all other vertices in the graph. If `genPaths
454
- * @returns The function `dijkstraWithoutHeap` returns an object of type `DijkstraResult<V>`.
414
+ * @returns The function `dijkstraWithoutHeap` returns an object of type `DijkstraResult<VO>`.
455
415
  */
456
416
  dijkstraWithoutHeap(
457
- src: V | VertexKey,
458
- dest?: V | VertexKey | null,
417
+ src: VO | VertexKey,
418
+ dest?: VO | VertexKey | null,
459
419
  getMinDist?: boolean,
460
420
  genPaths?: boolean
461
- ): DijkstraResult<V> {
421
+ ): DijkstraResult<VO> {
462
422
  if (getMinDist === undefined) getMinDist = false;
463
423
  if (genPaths === undefined) genPaths = false;
464
424
 
465
425
  if (dest === undefined) dest = null;
466
426
  let minDist = Infinity;
467
- let minDest: V | null = null;
468
- let minPath: V[] = [];
469
- const paths: V[][] = [];
427
+ let minDest: VO | null = null;
428
+ let minPath: VO[] = [];
429
+ const paths: VO[][] = [];
470
430
 
471
431
  const vertices = this._vertices;
472
- const distMap: Map<V, number> = new Map();
473
- const seen: Set<V> = new Set();
474
- const preMap: Map<V, V | null> = new Map(); // predecessor
432
+ const distMap: Map<VO, number> = new Map();
433
+ const seen: Set<VO> = new Set();
434
+ const preMap: Map<VO, VO | null> = new Map(); // predecessor
475
435
  const srcVertex = this._getVertex(src);
476
436
 
477
437
  const destVertex = dest ? this._getVertex(dest) : null;
@@ -489,11 +449,11 @@ export abstract class AbstractGraph<
489
449
 
490
450
  const getMinOfNoSeen = () => {
491
451
  let min = Infinity;
492
- let minV: V | null = null;
493
- for (const [key, val] of distMap) {
452
+ let minV: VO | null = null;
453
+ for (const [key, value] of distMap) {
494
454
  if (!seen.has(key)) {
495
- if (val < min) {
496
- min = val;
455
+ if (value < min) {
456
+ min = value;
497
457
  minV = key;
498
458
  }
499
459
  }
@@ -501,12 +461,12 @@ export abstract class AbstractGraph<
501
461
  return minV;
502
462
  };
503
463
 
504
- const getPaths = (minV: V | null) => {
464
+ const getPaths = (minV: VO | null) => {
505
465
  for (const vertex of vertices) {
506
466
  const vertexOrKey = vertex[1];
507
467
 
508
468
  if (vertexOrKey instanceof AbstractVertex) {
509
- const path: V[] = [vertexOrKey];
469
+ const path: VO[] = [vertexOrKey];
510
470
  let parent = preMap.get(vertexOrKey);
511
471
  while (parent) {
512
472
  path.push(parent);
@@ -553,14 +513,14 @@ export abstract class AbstractGraph<
553
513
  }
554
514
 
555
515
  getMinDist &&
556
- distMap.forEach((d, v) => {
557
- if (v !== srcVertex) {
558
- if (d < minDist) {
559
- minDist = d;
560
- if (genPaths) minDest = v;
561
- }
516
+ distMap.forEach((d, v) => {
517
+ if (v !== srcVertex) {
518
+ if (d < minDist) {
519
+ minDist = d;
520
+ if (genPaths) minDest = v;
562
521
  }
563
- });
522
+ }
523
+ });
564
524
 
565
525
  genPaths && getPaths(minDest);
566
526
 
@@ -568,11 +528,11 @@ export abstract class AbstractGraph<
568
528
  }
569
529
 
570
530
  /**
571
- * Dijkstra algorithm time: O(logVE) space: O(V + E)
531
+ * Dijkstra algorithm time: O(logVE) space: O(VO + EO)
572
532
  *
573
533
  * Dijkstra's algorithm only solves the single-source shortest path problem, while the Bellman-Ford algorithm and Floyd-Warshall algorithm can address shortest paths between all pairs of nodes.
574
534
  * Dijkstra's algorithm is suitable for graphs with non-negative edge weights, whereas the Bellman-Ford algorithm and Floyd-Warshall algorithm can handle negative-weight edges.
575
- * The time complexity of Dijkstra's algorithm and the Bellman-Ford algorithm depends on the size of the graph, while the time complexity of the Floyd-Warshall algorithm is O(V^3), where V is the number of nodes. For dense graphs, Floyd-Warshall might become slower.
535
+ * The time complexity of Dijkstra's algorithm and the Bellman-Ford algorithm depends on the size of the graph, while the time complexity of the Floyd-Warshall algorithm is O(VO^3), where VO is the number of nodes. For dense graphs, Floyd-Warshall might become slower.
576
536
  *
577
537
  * /
578
538
 
@@ -580,9 +540,9 @@ export abstract class AbstractGraph<
580
540
  * Dijkstra's algorithm is used to find the shortest paths from a source node to all other nodes in a graph. Its basic idea is to repeatedly choose the node closest to the source node and update the distances of other nodes using this node as an intermediary. Dijkstra's algorithm requires that the edge weights in the graph are non-negative.
581
541
  * The `dijkstra` function implements Dijkstra's algorithm to find the shortest path between a source vertex and an
582
542
  * optional destination vertex, and optionally returns the minimum distance, the paths, and other information.
583
- * @param {V | VertexKey} src - The `src` parameter represents the source vertex from which the Dijkstra algorithm will
543
+ * @param {VO | VertexKey} src - The `src` parameter represents the source vertex from which the Dijkstra algorithm will
584
544
  * start. It can be either a vertex object or a vertex ID.
585
- * @param {V | VertexKey | null} [dest] - The `dest` parameter is the destination vertex or vertex ID. It specifies the
545
+ * @param {VO | VertexKey | null} [dest] - The `dest` parameter is the destination vertex or vertex ID. It specifies the
586
546
  * vertex to which the shortest path is calculated from the source vertex. If no destination is provided, the algorithm
587
547
  * will calculate the shortest paths to all other vertices from the source vertex.
588
548
  * @param {boolean} [getMinDist] - The `getMinDist` parameter is a boolean flag that determines whether the minimum
@@ -591,26 +551,26 @@ export abstract class AbstractGraph<
591
551
  * @param {boolean} [genPaths] - The `genPaths` parameter is a boolean flag that determines whether or not to generate
592
552
  * paths in the Dijkstra algorithm. If `genPaths` is set to `true`, the algorithm will calculate and return the
593
553
  * shortest paths from the source vertex to all other vertices in the graph. If `genPaths
594
- * @returns The function `dijkstra` returns an object of type `DijkstraResult<V>`.
554
+ * @returns The function `dijkstra` returns an object of type `DijkstraResult<VO>`.
595
555
  */
596
556
  dijkstra(
597
- src: V | VertexKey,
598
- dest?: V | VertexKey | null,
557
+ src: VO | VertexKey,
558
+ dest?: VO | VertexKey | null,
599
559
  getMinDist?: boolean,
600
560
  genPaths?: boolean
601
- ): DijkstraResult<V> {
561
+ ): DijkstraResult<VO> {
602
562
  if (getMinDist === undefined) getMinDist = false;
603
563
  if (genPaths === undefined) genPaths = false;
604
564
 
605
565
  if (dest === undefined) dest = null;
606
566
  let minDist = Infinity;
607
- let minDest: V | null = null;
608
- let minPath: V[] = [];
609
- const paths: V[][] = [];
567
+ let minDest: VO | null = null;
568
+ let minPath: VO[] = [];
569
+ const paths: VO[][] = [];
610
570
  const vertices = this._vertices;
611
- const distMap: Map<V, number> = new Map();
612
- const seen: Set<V> = new Set();
613
- const preMap: Map<V, V | null> = new Map(); // predecessor
571
+ const distMap: Map<VO, number> = new Map();
572
+ const seen: Set<VO> = new Set();
573
+ const preMap: Map<VO, VO | null> = new Map(); // predecessor
614
574
 
615
575
  const srcVertex = this._getVertex(src);
616
576
  const destVertex = dest ? this._getVertex(dest) : null;
@@ -622,24 +582,22 @@ export abstract class AbstractGraph<
622
582
  if (vertexOrKey instanceof AbstractVertex) distMap.set(vertexOrKey, Infinity);
623
583
  }
624
584
 
625
- const heap = new PriorityQueue<{key: number; val: V}>({
626
- comparator: (a, b) => a.key - b.key
627
- });
628
- heap.add({key: 0, val: srcVertex});
585
+ const heap = new PriorityQueue<{ key: number; value: VO }>({comparator: (a, b) => a.key - b.key});
586
+ heap.add({key: 0, value: srcVertex});
629
587
 
630
588
  distMap.set(srcVertex, 0);
631
589
  preMap.set(srcVertex, null);
632
590
 
633
591
  /**
634
592
  * The function `getPaths` retrieves all paths from vertices to a specified minimum vertex.
635
- * @param {V | null} minV - The parameter `minV` is of type `V | null`. It represents the minimum vertex value or
593
+ * @param {VO | null} minV - The parameter `minV` is of type `VO | null`. It represents the minimum vertex value or
636
594
  * null.
637
595
  */
638
- const getPaths = (minV: V | null) => {
596
+ const getPaths = (minV: VO | null) => {
639
597
  for (const vertex of vertices) {
640
598
  const vertexOrKey = vertex[1];
641
599
  if (vertexOrKey instanceof AbstractVertex) {
642
- const path: V[] = [vertexOrKey];
600
+ const path: VO[] = [vertexOrKey];
643
601
  let parent = preMap.get(vertexOrKey);
644
602
  while (parent) {
645
603
  path.push(parent);
@@ -655,7 +613,7 @@ export abstract class AbstractGraph<
655
613
  while (heap.size > 0) {
656
614
  const curHeapNode = heap.poll();
657
615
  const dist = curHeapNode?.key;
658
- const cur = curHeapNode?.val;
616
+ const cur = curHeapNode?.value;
659
617
  if (dist !== undefined) {
660
618
  if (cur) {
661
619
  seen.add(cur);
@@ -676,7 +634,7 @@ export abstract class AbstractGraph<
676
634
  const distSrcToNeighbor = distMap.get(neighbor);
677
635
  if (distSrcToNeighbor) {
678
636
  if (dist + weight < distSrcToNeighbor) {
679
- heap.add({key: dist + weight, val: neighbor});
637
+ heap.add({key: dist + weight, value: neighbor});
680
638
  preMap.set(neighbor, cur);
681
639
  distMap.set(neighbor, dist + weight);
682
640
  }
@@ -707,17 +665,17 @@ export abstract class AbstractGraph<
707
665
  }
708
666
 
709
667
  /**
710
- * BellmanFord time:O(VE) space:O(V)
668
+ * BellmanFord time:O(VE) space:O(VO)
711
669
  * one to rest pairs
712
670
  * /
713
671
 
714
672
  /**
715
- * BellmanFord time:O(VE) space:O(V)
673
+ * BellmanFord time:O(VE) space:O(VO)
716
674
  * one to rest pairs
717
675
  * The Bellman-Ford algorithm is also used to find the shortest paths from a source node to all other nodes in a graph. Unlike Dijkstra's algorithm, it can handle edge weights that are negative. Its basic idea involves iterative relaxation of all edges for several rounds to gradually approximate the shortest paths. Due to its ability to handle negative-weight edges, the Bellman-Ford algorithm is more flexible in some scenarios.
718
676
  * The `bellmanFord` function implements the Bellman-Ford algorithm to find the shortest path from a source vertex to
719
677
  * all other vertices in a graph, and optionally detects negative cycles and generates the minimum path.
720
- * @param {V | VertexKey} src - The `src` parameter is the source vertex from which the Bellman-Ford algorithm will
678
+ * @param {VO | VertexKey} src - The `src` parameter is the source vertex from which the Bellman-Ford algorithm will
721
679
  * start calculating the shortest paths. It can be either a vertex object or a vertex ID.
722
680
  * @param {boolean} [scanNegativeCycle] - A boolean flag indicating whether to scan for negative cycles in the graph.
723
681
  * @param {boolean} [getMin] - The `getMin` parameter is a boolean flag that determines whether the algorithm should
@@ -727,16 +685,16 @@ export abstract class AbstractGraph<
727
685
  * vertex.
728
686
  * @returns The function `bellmanFord` returns an object with the following properties:
729
687
  */
730
- bellmanFord(src: V | VertexKey, scanNegativeCycle?: boolean, getMin?: boolean, genPath?: boolean) {
688
+ bellmanFord(src: VO | VertexKey, scanNegativeCycle?: boolean, getMin?: boolean, genPath?: boolean) {
731
689
  if (getMin === undefined) getMin = false;
732
690
  if (genPath === undefined) genPath = false;
733
691
 
734
692
  const srcVertex = this._getVertex(src);
735
- const paths: V[][] = [];
736
- const distMap: Map<V, number> = new Map();
737
- const preMap: Map<V, V> = new Map(); // predecessor
693
+ const paths: VO[][] = [];
694
+ const distMap: Map<VO, number> = new Map();
695
+ const preMap: Map<VO, VO> = new Map(); // predecessor
738
696
  let min = Infinity;
739
- let minPath: V[] = [];
697
+ let minPath: VO[] = [];
740
698
  // TODO
741
699
  let hasNegativeCycle: boolean | undefined;
742
700
  if (scanNegativeCycle) hasNegativeCycle = false;
@@ -771,7 +729,7 @@ export abstract class AbstractGraph<
771
729
  }
772
730
  }
773
731
 
774
- let minDest: V | null = null;
732
+ let minDest: VO | null = null;
775
733
  if (getMin) {
776
734
  distMap.forEach((d, v) => {
777
735
  if (v !== srcVertex) {
@@ -787,7 +745,7 @@ export abstract class AbstractGraph<
787
745
  for (const vertex of vertices) {
788
746
  const vertexOrKey = vertex[1];
789
747
  if (vertexOrKey instanceof AbstractVertex) {
790
- const path: V[] = [vertexOrKey];
748
+ const path: VO[] = [vertexOrKey];
791
749
  let parent = preMap.get(vertexOrKey);
792
750
  while (parent !== undefined) {
793
751
  path.push(parent);
@@ -816,34 +774,34 @@ export abstract class AbstractGraph<
816
774
  }
817
775
 
818
776
  /**
819
- * Dijkstra algorithm time: O(logVE) space: O(V + E)
777
+ * Dijkstra algorithm time: O(logVE) space: O(VO + EO)
820
778
  * /
821
779
 
822
780
  /**
823
- * Dijkstra algorithm time: O(logVE) space: O(V + E)
781
+ * Dijkstra algorithm time: O(logVE) space: O(VO + EO)
824
782
  * Dijkstra's algorithm is used to find the shortest paths from a source node to all other nodes in a graph. Its basic idea is to repeatedly choose the node closest to the source node and update the distances of other nodes using this node as an intermediary. Dijkstra's algorithm requires that the edge weights in the graph are non-negative.
825
783
  */
826
784
 
827
785
  /**
828
- * BellmanFord time:O(VE) space:O(V)
786
+ * BellmanFord time:O(VE) space:O(VO)
829
787
  * one to rest pairs
830
788
  * The Bellman-Ford algorithm is also used to find the shortest paths from a source node to all other nodes in a graph. Unlike Dijkstra's algorithm, it can handle edge weights that are negative. Its basic idea involves iterative relaxation of all edges for several rounds to gradually approximate the shortest paths. Due to its ability to handle negative-weight edges, the Bellman-Ford algorithm is more flexible in some scenarios.
831
789
  * The `bellmanFord` function implements the Bellman-Ford algorithm to find the shortest path from a source vertex to
832
790
  */
833
791
 
834
792
  /**
835
- * Floyd algorithm time: O(V^3) space: O(V^2), not support graph with negative weight cycle
793
+ * Floyd algorithm time: O(VO^3) space: O(VO^2), not support graph with negative weight cycle
836
794
  * all pairs
837
795
  * The Floyd-Warshall algorithm is used to find the shortest paths between all pairs of nodes in a graph. It employs dynamic programming to compute the shortest paths from any node to any other node. The Floyd-Warshall algorithm's advantage lies in its ability to handle graphs with negative-weight edges, and it can simultaneously compute shortest paths between any two nodes.
838
796
  */
839
797
 
840
798
  /**
841
- * Floyd algorithm time: O(V^3) space: O(V^2), not support graph with negative weight cycle
799
+ * Floyd algorithm time: O(VO^3) space: O(VO^2), not support graph with negative weight cycle
842
800
  * all pairs
843
801
  * /
844
802
 
845
803
  /**
846
- * Floyd algorithm time: O(V^3) space: O(V^2), not support graph with negative weight cycle
804
+ * Floyd algorithm time: O(VO^3) space: O(VO^2), not support graph with negative weight cycle
847
805
  * all pairs
848
806
  * The Floyd-Warshall algorithm is used to find the shortest paths between all pairs of nodes in a graph. It employs dynamic programming to compute the shortest paths from any node to any other node. The Floyd-Warshall algorithm's advantage lies in its ability to handle graphs with negative-weight edges, and it can simultaneously compute shortest paths between any two nodes.
849
807
  * The function implements the Floyd-Warshall algorithm to find the shortest path between all pairs of vertices in a
@@ -853,12 +811,12 @@ export abstract class AbstractGraph<
853
811
  * `predecessor` property is a 2D array of vertices (or `null`) representing the predecessor vertices in the shortest
854
812
  * path between vertices in the
855
813
  */
856
- floyd(): {costs: number[][]; predecessor: (V | null)[][]} {
814
+ floyd(): { costs: number[][]; predecessor: (VO | null)[][] } {
857
815
  const idAndVertices = [...this._vertices];
858
816
  const n = idAndVertices.length;
859
817
 
860
818
  const costs: number[][] = [];
861
- const predecessor: (V | null)[][] = [];
819
+ const predecessor: (VO | null)[][] = [];
862
820
  // successors
863
821
 
864
822
  for (let i = 0; i < n; i++) {
@@ -928,8 +886,8 @@ export abstract class AbstractGraph<
928
886
  if (needSCCs === undefined) needSCCs = defaultConfig;
929
887
  if (needCycles === undefined) needCycles = defaultConfig;
930
888
 
931
- const dfnMap: Map<V, number> = new Map();
932
- const lowMap: Map<V, number> = new Map();
889
+ const dfnMap: Map<VO, number> = new Map();
890
+ const lowMap: Map<VO, number> = new Map();
933
891
  const vertices = this._vertices;
934
892
  vertices.forEach(v => {
935
893
  dfnMap.set(v, -1);
@@ -938,10 +896,10 @@ export abstract class AbstractGraph<
938
896
 
939
897
  const [root] = vertices.values();
940
898
 
941
- const articulationPoints: V[] = [];
942
- const bridges: E[] = [];
899
+ const articulationPoints: VO[] = [];
900
+ const bridges: EO[] = [];
943
901
  let dfn = 0;
944
- const dfs = (cur: V, parent: V | null) => {
902
+ const dfs = (cur: VO, parent: VO | null) => {
945
903
  dfn++;
946
904
  dfnMap.set(cur, dfn);
947
905
  lowMap.set(cur, dfn);
@@ -984,10 +942,10 @@ export abstract class AbstractGraph<
984
942
 
985
943
  dfs(root, null);
986
944
 
987
- let SCCs: Map<number, V[]> = new Map();
945
+ let SCCs: Map<number, VO[]> = new Map();
988
946
 
989
947
  const getSCCs = () => {
990
- const SCCs: Map<number, V[]> = new Map();
948
+ const SCCs: Map<number, VO[]> = new Map();
991
949
  lowMap.forEach((low, vertex) => {
992
950
  if (!SCCs.has(low)) {
993
951
  SCCs.set(low, [vertex]);
@@ -1002,9 +960,9 @@ export abstract class AbstractGraph<
1002
960
  SCCs = getSCCs();
1003
961
  }
1004
962
 
1005
- const cycles: Map<number, V[]> = new Map();
963
+ const cycles: Map<number, VO[]> = new Map();
1006
964
  if (needCycles) {
1007
- let SCCs: Map<number, V[]> = new Map();
965
+ let SCCs: Map<number, VO[]> = new Map();
1008
966
  if (SCCs.size < 1) {
1009
967
  SCCs = getSCCs();
1010
968
  }
@@ -1019,9 +977,9 @@ export abstract class AbstractGraph<
1019
977
  return {dfnMap, lowMap, bridges, articulationPoints, SCCs, cycles};
1020
978
  }
1021
979
 
1022
- protected abstract _addEdgeOnly(edge: E): boolean;
980
+ protected abstract _addEdgeOnly(edge: EO): boolean;
1023
981
 
1024
- protected _addVertexOnly(newVertex: V): boolean {
982
+ protected _addVertexOnly(newVertex: VO): boolean {
1025
983
  if (this.hasVertex(newVertex)) {
1026
984
  return false;
1027
985
  // throw (new Error('Duplicated vertex key is not allowed'));
@@ -1030,16 +988,13 @@ export abstract class AbstractGraph<
1030
988
  return true;
1031
989
  }
1032
990
 
1033
- protected _getVertex(vertexOrKey: VertexKey | V): V | null {
991
+ protected _getVertex(vertexOrKey: VertexKey | VO): VO | null {
1034
992
  const vertexKey = this._getVertexKey(vertexOrKey);
1035
993
  return this._vertices.get(vertexKey) || null;
1036
994
  }
1037
995
 
1038
- protected _getVertexKey(vertexOrKey: V | VertexKey): VertexKey {
996
+ protected _getVertexKey(vertexOrKey: VO | VertexKey): VertexKey {
1039
997
  return vertexOrKey instanceof AbstractVertex ? vertexOrKey.key : vertexOrKey;
1040
998
  }
1041
999
 
1042
- protected _setVertices(value: Map<VertexKey, V>) {
1043
- this._vertices = value;
1044
- }
1045
1000
  }