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
@@ -5,40 +5,39 @@
5
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
- import type {BinaryTreeNodeKey, TreeMultisetNodeNested, TreeMultisetOptions} from '../../types';
9
- import {BinaryTreeDeletedResult, CP, DFSOrderPattern, FamilyPosition, LoopType} from '../../types';
10
- import {ITreeMultiset, ITreeMultisetNode} from '../../interfaces';
8
+ import type {BTNKey, TreeMultisetNodeNested, TreeMultisetOptions} from '../../types';
9
+ import {BinaryTreeDeletedResult, BTNCallback, CP, FamilyPosition, IterationType} from '../../types';
10
+ import {IBinaryTree} from '../../interfaces';
11
11
  import {AVLTree, AVLTreeNode} from './avl-tree';
12
12
 
13
- export class TreeMultisetNode<V = any, NEIGHBOR extends TreeMultisetNode<V, NEIGHBOR> = TreeMultisetNodeNested<V>>
14
- extends AVLTreeNode<V, NEIGHBOR>
15
- implements ITreeMultisetNode<V, NEIGHBOR>
16
- {
13
+ export class TreeMultisetNode<
14
+ V = any,
15
+ N extends TreeMultisetNode<V, N> = TreeMultisetNodeNested<V>
16
+ > extends AVLTreeNode<V, N> {
17
+ count: number;
18
+
17
19
  /**
18
20
  * The constructor function initializes a BinaryTreeNode object with a key, value, and count.
19
- * @param {BinaryTreeNodeKey} key - The `key` parameter is of type `BinaryTreeNodeKey` and represents the unique identifier
21
+ * @param {BTNKey} key - The `key` parameter is of type `BTNKey` and represents the unique identifier
20
22
  * of the binary tree node.
21
- * @param {V} [val] - The `val` parameter is an optional parameter of type `V`. It represents the value of the binary
23
+ * @param {V} [value] - The `value` parameter is an optional parameter of type `V`. It represents the value of the binary
22
24
  * tree node. If no value is provided, it will be `undefined`.
23
25
  * @param {number} [count=1] - The `count` parameter is a number that represents the number of times a particular value
24
26
  * occurs in a binary tree node. It has a default value of 1, which means that if no value is provided for the `count`
25
27
  * parameter when creating a new instance of the `BinaryTreeNode` class.
26
28
  */
27
- constructor(key: BinaryTreeNodeKey, val?: V, count = 1) {
28
- super(key, val);
29
+ constructor(key: BTNKey, value?: V, count = 1) {
30
+ super(key, value);
29
31
  this.count = count;
30
32
  }
31
-
32
- count: number;
33
33
  }
34
34
 
35
35
  /**
36
36
  * The only distinction between a TreeMultiset and a AVLTree lies in the ability of the former to store duplicate nodes through the utilization of counters.
37
37
  */
38
- export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultisetNode>
39
- extends AVLTree<N>
40
- implements ITreeMultiset<N>
41
- {
38
+ export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultisetNode<V, TreeMultisetNodeNested<V>>>
39
+ extends AVLTree<V, N>
40
+ implements IBinaryTree<V, N> {
42
41
  /**
43
42
  * The constructor function for a TreeMultiset class in TypeScript, which extends another class and sets an option to
44
43
  * merge duplicated values.
@@ -57,67 +56,43 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
57
56
 
58
57
  /**
59
58
  * The function creates a new BSTNode with the given key, value, and count.
60
- * @param {BinaryTreeNodeKey} key - The key parameter is the unique identifier for the binary tree node. It is used to
59
+ * @param {BTNKey} key - The key parameter is the unique identifier for the binary tree node. It is used to
61
60
  * distinguish one node from another in the tree.
62
- * @param {N} val - The `val` parameter represents the value that will be stored in the binary search tree node.
61
+ * @param {N} value - The `value` parameter represents the value that will be stored in the binary search tree node.
63
62
  * @param {number} [count] - The "count" parameter is an optional parameter of type number. It represents the number of
64
63
  * occurrences of the value in the binary search tree node. If not provided, the count will default to 1.
65
64
  * @returns A new instance of the BSTNode class with the specified key, value, and count (if provided).
66
65
  */
67
- override createNode(key: BinaryTreeNodeKey, val?: N['val'], count?: number): N {
68
- return new TreeMultisetNode(key, val, count) as N;
66
+ override createNode(key: BTNKey, value?: V, count?: number): N {
67
+ return new TreeMultisetNode(key, value, count) as N;
69
68
  }
70
69
 
71
70
  /**
72
- * The function swaps the location of two nodes in a tree data structure.
73
- * @param {N} srcNode - The source node that we want to swap with the destination node.
74
- * @param {N} destNode - The `destNode` parameter represents the destination node where the values from `srcNode` will
75
- * be swapped with.
76
- * @returns the `destNode` after swapping its values with the `srcNode`.
71
+ * The `add` function adds a new node to a binary search tree, updating the count if the key already
72
+ * exists, and balancing the tree if necessary.
73
+ * @param {BTNKey | N | null} keyOrNode - The `keyOrNode` parameter can be either a
74
+ * `BTNKey` (which represents the key of the node to be added), a `N` (which represents a
75
+ * node to be added), or `null` (which represents a null node).
76
+ * @param [value] - The `value` parameter represents the value associated with the key that is being
77
+ * added to the binary tree.
78
+ * @param [count=1] - The `count` parameter represents the number of occurrences of the key/value
79
+ * pair that will be added to the binary tree. It has a default value of 1, which means that if no
80
+ * count is specified, the default count will be 1.
81
+ * @returns The function `add` returns a value of type `N | null | undefined`.
77
82
  */
78
- override swapLocation(srcNode: N, destNode: N): N {
79
- const {key, val, count, height} = destNode;
80
- const tempNode = this.createNode(key, val, count);
81
- if (tempNode) {
82
- tempNode.height = height;
83
-
84
- destNode.key = srcNode.key;
85
- destNode.val = srcNode.val;
86
- destNode.count = srcNode.count;
87
- destNode.height = srcNode.height;
88
-
89
- srcNode.key = tempNode.key;
90
- srcNode.val = tempNode.val;
91
- srcNode.count = tempNode.count;
92
- srcNode.height = tempNode.height;
93
- }
94
-
95
- return destNode;
96
- }
97
-
98
- /**
99
- * The `add` function adds a new node to a binary search tree, maintaining the tree's properties and balancing if
100
- * necessary.
101
- * @param {BinaryTreeNodeKey | N} keyOrNode - The `keyOrNode` parameter can be either a `BinaryTreeNodeKey` or a `N` (which
102
- * represents a `BinaryTreeNode`).
103
- * @param [val] - The `val` parameter represents the value to be added to the binary tree node.
104
- * @param {number} [count] - The `count` parameter is an optional parameter that specifies the number of times the
105
- * value should be added to the binary tree. If the `count` parameter is not provided, it defaults to 1.
106
- * @returns The method `add` returns either the inserted node (`N`), `null`, or `undefined`.
107
- */
108
- override add(keyOrNode: BinaryTreeNodeKey | N | null, val?: N['val'], count = 1): N | null | undefined {
83
+ override add(keyOrNode: BTNKey | N | null, value?: V, count = 1): N | null | undefined {
109
84
  let inserted: N | null | undefined = undefined,
110
85
  newNode: N | null;
111
86
  if (keyOrNode instanceof TreeMultisetNode) {
112
- newNode = this.createNode(keyOrNode.key, keyOrNode.val, keyOrNode.count);
87
+ newNode = this.createNode(keyOrNode.key, keyOrNode.value, keyOrNode.count);
113
88
  } else if (keyOrNode === null) {
114
89
  newNode = null;
115
90
  } else {
116
- newNode = this.createNode(keyOrNode, val, count);
91
+ newNode = this.createNode(keyOrNode, value, count);
117
92
  }
118
93
  if (!this.root) {
119
94
  this._setRoot(newNode);
120
- this._setSize(this.size + 1);
95
+ this._size = this.size + 1;
121
96
  newNode && this._setCount(this.count + newNode.count);
122
97
  inserted = this.root;
123
98
  } else {
@@ -127,7 +102,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
127
102
  if (cur) {
128
103
  if (newNode) {
129
104
  if (this._compare(cur.key, newNode.key) === CP.eq) {
130
- cur.val = newNode.val;
105
+ cur.value = newNode.value;
131
106
  cur.count += newNode.count;
132
107
  this._setCount(this.count + newNode.count);
133
108
  traversing = false;
@@ -137,7 +112,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
137
112
  if (cur.left === undefined) {
138
113
  //Add to the left of the current node
139
114
  cur.left = newNode;
140
- this._setSize(this.size + 1);
115
+ this._size = this.size + 1;
141
116
  this._setCount(this.count + newNode.count);
142
117
 
143
118
  traversing = false;
@@ -151,7 +126,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
151
126
  if (cur.right === undefined) {
152
127
  //Add to the right of the current node
153
128
  cur.right = newNode;
154
- this._setSize(this.size + 1);
129
+ this._size = this.size + 1;
155
130
  this._setCount(this.count + newNode.count);
156
131
 
157
132
  traversing = false;
@@ -174,20 +149,19 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
174
149
  }
175
150
 
176
151
  /**
177
- * The function adds a new node to a binary tree if there is an available slot on the left or right side of the parent
178
- * node.
179
- * @param {N | null} newNode - The `newNode` parameter represents the node that needs to be added to the tree. It can
180
- * be either a node object (`N`) or `null`.
181
- * @param {N} parent - The `parent` parameter represents the parent node to which the new node will be added as a
182
- * child.
183
- * @returns The method returns either the `parent.left`, `parent.right`, or `undefined`.
152
+ * The function adds a new node to a binary tree if there is an available slot in the parent node.
153
+ * @param {N | null} newNode - The `newNode` parameter represents the node that needs to be added to
154
+ * the tree. It can be either a node object (`N`) or `null`.
155
+ * @param {N} parent - The `parent` parameter represents the parent node to which the new node will
156
+ * be added as a child.
157
+ * @returns The method `_addTo` returns either the `parent.left`, `parent.right`, or `undefined`.
184
158
  */
185
159
  override _addTo(newNode: N | null, parent: N): N | null | undefined {
186
160
  if (parent) {
187
161
  if (parent.left === undefined) {
188
162
  parent.left = newNode;
189
163
  if (newNode !== null) {
190
- this._setSize(this.size + 1);
164
+ this._size = this.size + 1;
191
165
  this._setCount(this.count + newNode.count);
192
166
  }
193
167
 
@@ -195,7 +169,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
195
169
  } else if (parent.right === undefined) {
196
170
  parent.right = newNode;
197
171
  if (newNode !== null) {
198
- this._setSize(this.size + 1);
172
+ this._size = (this.size + 1);
199
173
  this._setCount(this.count + newNode.count);
200
174
  }
201
175
  return parent.right;
@@ -208,31 +182,28 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
208
182
  }
209
183
 
210
184
  /**
211
- * The `addMany` function takes an array of node IDs or nodes and adds them to the tree multiset, returning an array of
212
- * the inserted nodes.
213
- * @param {(BinaryTreeNodeKey | null)[] | (N | null)[]} keysOrNodes - An array of BinaryTreeNodeKey or BinaryTreeNode
214
- * objects, or null values.
215
- * @param {N['val'][]} [data] - The `data` parameter is an optional array of values (`N['val'][]`) that corresponds to
216
- * the nodes being added. It is used when adding nodes using the `keyOrNode` and `data` arguments in the `this.add()`
217
- * method. If provided, the `data` array should
185
+ * The `addMany` function adds multiple keys or nodes to a TreeMultiset and returns an array of the
186
+ * inserted nodes.
187
+ * @param {(BTNKey | null)[] | (N | null)[]} keysOrNodes - An array of keys or nodes to be
188
+ * added to the multiset. Each element can be either a BTNKey or a TreeMultisetNode.
189
+ * @param {V[]} [data] - The `data` parameter is an optional array of values that correspond
190
+ * to the keys or nodes being added to the multiset. It is used to associate additional data with
191
+ * each key or node.
218
192
  * @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
219
193
  */
220
- override addMany(
221
- keysOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[],
222
- data?: N['val'][]
223
- ): (N | null | undefined)[] {
194
+ override addMany(keysOrNodes: (BTNKey | null)[] | (N | null)[], data?: V[]): (N | null | undefined)[] {
224
195
  const inserted: (N | null | undefined)[] = [];
225
196
 
226
197
  for (let i = 0; i < keysOrNodes.length; i++) {
227
198
  const keyOrNode = keysOrNodes[i];
228
199
 
229
200
  if (keyOrNode instanceof TreeMultisetNode) {
230
- inserted.push(this.add(keyOrNode.key, keyOrNode.val, keyOrNode.count));
201
+ inserted.push(this.add(keyOrNode.key, keyOrNode.value, keyOrNode.count));
231
202
  continue;
232
203
  }
233
204
 
234
205
  if (keyOrNode === null) {
235
- inserted.push(this.add(NaN, null, 0));
206
+ inserted.push(this.add(NaN, undefined, 0));
236
207
  continue;
237
208
  }
238
209
 
@@ -242,23 +213,26 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
242
213
  }
243
214
 
244
215
  /**
245
- * The `perfectlyBalance` function takes a binary tree, performs a depth-first search to sort the nodes, and then
246
- * constructs a balanced binary search tree using either a recursive or iterative approach.
247
- * @returns The function `perfectlyBalance()` returns a boolean value.
216
+ * The `perfectlyBalance` function in TypeScript takes a sorted array of nodes and builds a balanced
217
+ * binary search tree using either a recursive or iterative approach.
218
+ * @param iterationType - The `iterationType` parameter is an optional parameter that specifies the
219
+ * type of iteration to use when building a balanced binary search tree. It can have two possible
220
+ * values:
221
+ * @returns a boolean value.
248
222
  */
249
- override perfectlyBalance(): boolean {
250
- const sorted = this.dfs('in', 'node'),
223
+ override perfectlyBalance(iterationType = this.iterationType): boolean {
224
+ const sorted = this.dfs(node => node, 'in'),
251
225
  n = sorted.length;
252
226
  if (sorted.length < 1) return false;
253
227
 
254
228
  this.clear();
255
229
 
256
- if (this.loopType === LoopType.RECURSIVE) {
230
+ if (iterationType === IterationType.RECURSIVE) {
257
231
  const buildBalanceBST = (l: number, r: number) => {
258
232
  if (l > r) return;
259
233
  const m = l + Math.floor((r - l) / 2);
260
234
  const midNode = sorted[m];
261
- this.add(midNode.key, midNode.val, midNode.count);
235
+ this.add(midNode.key, midNode.value, midNode.count);
262
236
  buildBalanceBST(l, m - 1);
263
237
  buildBalanceBST(m + 1, r);
264
238
  };
@@ -274,7 +248,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
274
248
  if (l <= r) {
275
249
  const m = l + Math.floor((r - l) / 2);
276
250
  const midNode = sorted[m];
277
- this.add(midNode.key, midNode.val, midNode.count);
251
+ this.add(midNode.key, midNode.value, midNode.count);
278
252
  stack.push([m + 1, r]);
279
253
  stack.push([l, m - 1]);
280
254
  }
@@ -285,19 +259,30 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
285
259
  }
286
260
 
287
261
  /**
288
- * The `remove` function removes a node from a binary search tree and returns the deleted node along with the parent
289
- * node that needs to be balanced.
290
- * @param {N | BinaryTreeNodeKey | null} nodeOrKey - The `nodeOrKey` parameter can be one of the following:
291
- * @param {boolean} [ignoreCount] - The `ignoreCount` parameter is an optional boolean parameter that determines
292
- * whether to ignore the count of the node being removed. If `ignoreCount` is set to `true`, the count of the node will
293
- * not be taken into account when removing it. If `ignoreCount` is set to `false
294
- * @returns The function `remove` returns an array of `BinaryTreeDeletedResult<N>` objects.
262
+ * The `delete` function in a binary search tree deletes a node from the tree and returns the deleted
263
+ * node along with the parent node that needs to be balanced.
264
+ * @param {ReturnType<C>} identifier - The `identifier` parameter is either a
265
+ * `BTNKey` or a generic type `N`. It represents the property of the node that we are
266
+ * searching for. It can be a specific key value or any other property of the node.
267
+ * @param callback - The `callback` parameter is a function that takes a node as input and returns a
268
+ * value. This value is compared with the `identifier` parameter to determine if the node should be
269
+ * included in the result. The `callback` parameter has a default value of
270
+ * `((node: N) => node.key)`
271
+ * @param [ignoreCount=false] - A boolean flag indicating whether to ignore the count of the node
272
+ * being deleted. If set to true, the count of the node will not be considered and the node will be
273
+ * deleted regardless of its count. If set to false (default), the count of the node will be
274
+ * decremented by 1 and
275
+ * @returns The method `delete` returns an array of `BinaryTreeDeletedResult<N>` objects.
295
276
  */
296
- override remove(nodeOrKey: N | BinaryTreeNodeKey, ignoreCount = false): BinaryTreeDeletedResult<N>[] {
277
+ override delete<C extends BTNCallback<N>>(
278
+ identifier: ReturnType<C>,
279
+ callback: C = ((node: N) => node.key) as C,
280
+ ignoreCount = false
281
+ ): BinaryTreeDeletedResult<N>[] {
297
282
  const bstDeletedResult: BinaryTreeDeletedResult<N>[] = [];
298
283
  if (!this.root) return bstDeletedResult;
299
284
 
300
- const curr: N | null = this.get(nodeOrKey);
285
+ const curr: N | null = this.get(identifier, callback);
301
286
  if (!curr) return bstDeletedResult;
302
287
 
303
288
  const parent: N | null = curr?.parent ? curr.parent : null;
@@ -324,7 +309,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
324
309
  const leftSubTreeRightMost = curr.left ? this.getRightMost(curr.left) : null;
325
310
  if (leftSubTreeRightMost) {
326
311
  const parentOfLeftSubTreeMax = leftSubTreeRightMost.parent;
327
- orgCurrent = this.swapLocation(curr, leftSubTreeRightMost);
312
+ orgCurrent = this._swap(curr, leftSubTreeRightMost);
328
313
  if (parentOfLeftSubTreeMax) {
329
314
  if (parentOfLeftSubTreeMax.right === leftSubTreeRightMost) {
330
315
  parentOfLeftSubTreeMax.right = leftSubTreeRightMost.left;
@@ -335,7 +320,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
335
320
  }
336
321
  }
337
322
  }
338
- this._setSize(this.size - 1);
323
+ this._size = this.size - 1;
339
324
  // TODO How to handle when the count of target node is lesser than current node's count
340
325
  this._setCount(this.count - orgCurrent.count);
341
326
  }
@@ -350,336 +335,42 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
350
335
  }
351
336
 
352
337
  /**
353
- * The function `getSubTreeCount` calculates the number of nodes and the sum of their counts in a subtree, using either
354
- * recursive or iterative traversal.
355
- * @param {N | null | undefined} subTreeRoot - The `subTreeRoot` parameter represents the root node of a subtree in a
356
- * binary tree.
357
- * @returns The function `getSubTreeCount` returns an array `[number, number]`.
358
- */
359
- getSubTreeCount(subTreeRoot: N | null | undefined) {
360
- const res: [number, number] = [0, 0];
361
- if (!subTreeRoot) return res;
362
-
363
- if (this.loopType === LoopType.RECURSIVE) {
364
- const _traverse = (cur: N) => {
365
- res[0]++;
366
- res[1] += cur.count;
367
- cur.left && _traverse(cur.left);
368
- cur.right && _traverse(cur.right);
369
- };
370
-
371
- _traverse(subTreeRoot);
372
- return res;
373
- } else {
374
- const stack: N[] = [subTreeRoot];
375
-
376
- while (stack.length > 0) {
377
- const cur = stack.pop()!;
378
- res[0]++;
379
- res[1] += cur.count;
380
- cur.right && stack.push(cur.right);
381
- cur.left && stack.push(cur.left);
382
- }
383
-
384
- return res;
385
- }
386
- }
387
-
388
- /**
389
- * The function `subTreeSumCount` calculates the sum of the `count` property of each node in a subtree, either
390
- * recursively or iteratively.
391
- * @param {N | BinaryTreeNodeKey | null} subTreeRoot - The `subTreeRoot` parameter represents the root node of a subtree
392
- * in a binary tree. It can be either a `BinaryTreeNodeKey` (a unique identifier for a node in the binary tree) or
393
- * `null` if the subtree is empty.
394
- * @returns the sum of the count values of all nodes in the subtree rooted at `subTreeRoot`.
395
- */
396
- subTreeSumCount(subTreeRoot: N | BinaryTreeNodeKey | null): number {
397
- if (typeof subTreeRoot === 'number') subTreeRoot = this.get(subTreeRoot, 'key');
398
-
399
- if (!subTreeRoot) return 0;
400
-
401
- let sum = 0;
402
-
403
- if (this.loopType === LoopType.RECURSIVE) {
404
- const _traverse = (cur: N): void => {
405
- sum += cur.count;
406
- cur.left && _traverse(cur.left);
407
- cur.right && _traverse(cur.right);
408
- };
409
-
410
- _traverse(subTreeRoot);
411
- } else {
412
- const stack: N[] = [subTreeRoot];
413
-
414
- while (stack.length > 0) {
415
- const cur = stack.pop()!;
416
- sum += cur.count;
417
- cur.right && stack.push(cur.right);
418
- cur.left && stack.push(cur.left);
419
- }
420
- }
421
-
422
- return sum;
423
- }
424
-
425
- /**
426
- * The function `subTreeAddCount` recursively or iteratively traverses a binary tree and adds a given delta value to
427
- * the `count` property of each node.
428
- * @param {N | BinaryTreeNodeKey | null} subTreeRoot - The `subTreeRoot` parameter represents the root node of a subtree
429
- * in a binary tree. It can be either a `BinaryTreeNodeKey` (a unique identifier for a node in the binary tree), a
430
- * `BinaryTreeNode` object, or `null` if the subtree is empty.
431
- * @param {number} delta - The delta parameter is a number that represents the amount by which the count of each node
432
- * in the subtree should be increased or decreased.
433
- * @returns a boolean value.
338
+ * The clear() function clears the contents of a data structure and sets the count to zero.
434
339
  */
435
- subTreeAddCount(subTreeRoot: N | BinaryTreeNodeKey | null, delta: number): boolean {
436
- if (typeof subTreeRoot === 'number') subTreeRoot = this.get(subTreeRoot, 'key');
437
-
438
- if (!subTreeRoot) return false;
439
-
440
- const _addByProperty = (cur: N) => {
441
- cur.count += delta;
442
- this._setCount(this.count + delta);
443
- };
444
-
445
- if (this.loopType === LoopType.RECURSIVE) {
446
- const _traverse = (cur: N) => {
447
- _addByProperty(cur);
448
- cur.left && _traverse(cur.left);
449
- cur.right && _traverse(cur.right);
450
- };
451
-
452
- _traverse(subTreeRoot);
453
- } else {
454
- const stack: N[] = [subTreeRoot];
455
-
456
- while (stack.length > 0) {
457
- const cur = stack.pop()!;
458
-
459
- _addByProperty(cur);
460
- cur.right && stack.push(cur.right);
461
- cur.left && stack.push(cur.left);
462
- }
463
- }
464
- return true;
465
- }
466
-
467
- /**
468
- * The function `getNodesByCount` returns an array of nodes that have a specific count property, either recursively or
469
- * using a queue.
470
- * @param {BinaryTreeNodeKey | N} nodeProperty - The `nodeProperty` parameter can be either a `BinaryTreeNodeKey` or a
471
- * `N`. It represents the property of the nodes that you want to search for.
472
- * @param {boolean} [onlyOne] - The `onlyOne` parameter is an optional boolean parameter that determines whether to
473
- * return only one node that matches the `nodeProperty` or all nodes that match the `nodeProperty`. If `onlyOne` is set
474
- * to `true`, the function will return only one node. If `onlyOne`
475
- * @returns an array of nodes that match the given nodeProperty.
476
- */
477
- getNodesByCount(nodeProperty: BinaryTreeNodeKey | N, onlyOne = false): N[] {
478
- if (!this.root) return [];
479
- const result: N[] = [];
480
-
481
- if (this.loopType === LoopType.RECURSIVE) {
482
- const _traverse = (cur: N) => {
483
- if (cur.count === nodeProperty) {
484
- result.push(cur);
485
- if (onlyOne) return;
486
- }
487
-
488
- if (!cur.left && !cur.right) return;
489
- cur.left && _traverse(cur.left);
490
- cur.right && _traverse(cur.right);
491
- };
492
-
493
- _traverse(this.root);
494
- } else {
495
- const queue: N[] = [this.root];
496
- while (queue.length > 0) {
497
- const cur = queue.shift();
498
- if (cur) {
499
- if (cur.count === nodeProperty) {
500
- result.push(cur);
501
- if (onlyOne) return result;
502
- }
503
-
504
- cur.left && queue.push(cur.left);
505
- cur.right && queue.push(cur.right);
506
- }
507
- }
508
- }
509
-
510
- return result;
511
- }
512
-
513
- /**
514
- * The BFSCount function returns an array of counts from a breadth-first search of nodes.
515
- * @returns The BFSCount() function returns an array of numbers, specifically the count property of each node in the
516
- * bfs traversal.
517
- */
518
- BFSCount(): number[] {
519
- const nodes = super.bfs('node');
520
- return nodes.map(node => node.count);
521
- }
522
-
523
- /**
524
- * The function "listLevelsCount" takes a node and returns an array of arrays, where each inner array contains the
525
- * count property of each node at that level.
526
- * @param {N | null} node - The parameter `node` is of type `N | null`. This means that it can either be an instance of
527
- * the class `N` or `null`.
528
- * @returns a 2D array of numbers. Each inner array represents a level in the binary tree, and each number in the inner
529
- * array represents the count property of a node in that level.
530
- */
531
- listLevelsCount(node: N | null): number[][] {
532
- const levels = super.listLevels(node, 'node');
533
- return levels.map(level => level.map(node => node.count));
534
- }
535
-
536
- /**
537
- * The `morrisCount` function returns an array of counts for each node in a binary tree, based on a specified traversal
538
- * pattern.
539
- * @param {'in' | 'pre' | 'post'} [pattern] - The `pattern` parameter is an optional parameter that specifies the
540
- * traversal pattern for the Morris traversal algorithm. It can have one of three values: 'in', 'pre', or 'post'.
541
- * @returns The function `morrisCount` returns an array of numbers.
542
- */
543
- morrisCount(pattern: DFSOrderPattern = 'in'): number[] {
544
- const nodes = super.morris(pattern, 'node');
545
- return nodes.map(node => node.count);
546
- }
547
-
548
- /**
549
- * The function dfsCountIterative performs an iterative depth-first search and returns an array of node counts based on
550
- * the specified traversal pattern.
551
- * @param {'in' | 'pre' | 'post'} [pattern] - The pattern parameter is a string that specifies the traversal order for
552
- * the Depth-First Search (dfs) algorithm. It can have three possible values: 'in', 'pre', or 'post'.
553
- * @returns The dfsCountIterative function returns an array of numbers, which represents the count property of each node
554
- * in the dfs traversal.
555
- */
556
- dfsCountIterative(pattern: DFSOrderPattern = 'in'): number[] {
557
- const nodes = super.dfsIterative(pattern, 'node');
558
- return nodes.map(node => node.count);
559
- }
560
-
561
- /**
562
- * The dfsCount function returns an array of counts for each node in a depth-first search traversal.
563
- * @param {DFSOrderPattern} [pattern] - The pattern parameter is an optional parameter that specifies the order in which
564
- * the Depth-First Search (dfs) algorithm should traverse the nodes. It can have one of the following values:
565
- * @returns The dfsCount function returns an array of numbers, specifically the count property of each node in the dfs
566
- * traversal.
567
- */
568
- dfsCount(pattern: DFSOrderPattern = 'in'): number[] {
569
- const nodes = super.dfs(pattern, 'node');
570
- return nodes.map(node => node.count);
571
- }
572
-
573
- /**
574
- * The `lesserSumCount` function calculates the sum of the counts of all nodes in a binary tree that have a lesser
575
- * value than a given node.
576
- * @param {N | BinaryTreeNodeKey | null} beginNode - The `beginNode` parameter can be one of the following:
577
- * @returns the sum of the counts of nodes in the binary tree that have a lesser value than the given beginNode.
578
- */
579
- lesserSumCount(beginNode: N | BinaryTreeNodeKey | null): number {
580
- if (typeof beginNode === 'number') beginNode = this.get(beginNode, 'key');
581
- if (!beginNode) return 0;
582
- if (!this.root) return 0;
583
- const key = beginNode.key;
584
-
585
- let sum = 0;
586
-
587
- if (this.loopType === LoopType.RECURSIVE) {
588
- const _traverse = (cur: N): void => {
589
- const compared = this._compare(cur.key, key);
590
- if (compared === CP.eq) {
591
- if (cur.right) sum += this.subTreeSumCount(cur.right);
592
- return;
593
- } else if (compared === CP.lt) {
594
- if (cur.left) sum += this.subTreeSumCount(cur.left);
595
- sum += cur.count;
596
- if (cur.right) _traverse(cur.right);
597
- else return;
598
- } else {
599
- if (cur.left) _traverse(cur.left);
600
- else return;
601
- }
602
- };
603
-
604
- _traverse(this.root);
605
- } else {
606
- const queue: N[] = [this.root];
607
- while (queue.length > 0) {
608
- const cur = queue.shift();
609
- if (cur) {
610
- const compared = this._compare(cur.key, key);
611
- if (compared === CP.eq) {
612
- if (cur.right) sum += this.subTreeSumCount(cur.right);
613
- return sum;
614
- } else if (compared === CP.lt) {
615
- // todo maybe a bug
616
- if (cur.left) sum += this.subTreeSumCount(cur.left);
617
- sum += cur.count;
618
- if (cur.right) queue.push(cur.right);
619
- else return sum;
620
- } else {
621
- if (cur.left) queue.push(cur.left);
622
- else return sum;
623
- }
624
- }
625
- }
626
- }
627
-
628
- return sum;
340
+ clear() {
341
+ super.clear();
342
+ this._setCount(0);
629
343
  }
630
344
 
631
345
  /**
632
- * The function `allGreaterNodesAddCount` updates the count property of all nodes in a binary tree that have an ID
633
- * greater than a given ID by a specified delta value.
634
- * @param {N | BinaryTreeNodeKey | null} node - The `node` parameter can be one of the following:
635
- * @param {number} delta - The `delta` parameter is a number that represents the amount by which the `count` property
636
- * of each node should be increased.
637
- * @returns a boolean value.
346
+ * The function swaps the values of two nodes in a binary tree.
347
+ * @param {N} srcNode - The source node that needs to be swapped with the destination node.
348
+ * @param {N} destNode - The `destNode` parameter represents the destination node where the values
349
+ * from `srcNode` will be swapped into.
350
+ * @returns The method is returning the `destNode` after swapping its properties with the `srcNode`.
638
351
  */
639
- allGreaterNodesAddCount(node: N | BinaryTreeNodeKey | null, delta: number): boolean {
640
- if (typeof node === 'number') node = this.get(node, 'key');
641
- if (!node) return false;
642
- const key = node.key;
643
- if (!this.root) return false;
644
-
645
- if (this.loopType === LoopType.RECURSIVE) {
646
- const _traverse = (cur: N) => {
647
- const compared = this._compare(cur.key, key);
648
- if (compared === CP.gt) cur.count += delta;
649
-
650
- if (!cur.left && !cur.right) return;
651
- if (cur.left && this._compare(cur.left.key, key) === CP.gt) _traverse(cur.left);
652
- if (cur.right && this._compare(cur.right.key, key) === CP.gt) _traverse(cur.right);
653
- };
352
+ protected override _swap(srcNode: N, destNode: N): N {
353
+ const {key, value, count, height} = destNode;
354
+ const tempNode = this.createNode(key, value, count);
355
+ if (tempNode) {
356
+ tempNode.height = height;
654
357
 
655
- _traverse(this.root);
656
- return true;
657
- } else {
658
- const queue: N[] = [this.root];
659
- while (queue.length > 0) {
660
- const cur = queue.shift();
661
- if (cur) {
662
- const compared = this._compare(cur.key, key);
663
- if (compared === CP.gt) cur.count += delta;
358
+ destNode.key = srcNode.key;
359
+ destNode.value = srcNode.value;
360
+ destNode.count = srcNode.count;
361
+ destNode.height = srcNode.height;
664
362
 
665
- if (cur.left && this._compare(cur.left.key, key) === CP.gt) queue.push(cur.left);
666
- if (cur.right && this._compare(cur.right.key, key) === CP.gt) queue.push(cur.right);
667
- }
668
- }
669
- return true;
363
+ srcNode.key = tempNode.key;
364
+ srcNode.value = tempNode.value;
365
+ srcNode.count = tempNode.count;
366
+ srcNode.height = tempNode.height;
670
367
  }
671
- }
672
368
 
673
- /**
674
- * The clear() function clears the data and sets the count to 0.
675
- */
676
- clear() {
677
- super.clear();
678
- this._setCount(0);
369
+ return destNode;
679
370
  }
680
371
 
681
372
  /**
682
- * The function "_setCount" is used to set the value of the "_count" property.
373
+ * The function sets the value of the "_count" property.
683
374
  * @param {number} v - number
684
375
  */
685
376
  protected _setCount(v: number) {