data-structure-typed 2.0.5 → 2.1.1

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 (785) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/COMMANDS.md +27 -0
  3. package/README.md +5 -34
  4. package/benchmark/report.html +13 -77
  5. package/benchmark/report.json +152 -184
  6. package/dist/cjs/index.cjs +13062 -0
  7. package/dist/cjs/index.cjs.map +1 -0
  8. package/dist/esm/index.mjs +12984 -0
  9. package/dist/esm/index.mjs.map +1 -0
  10. package/dist/index.cjs +13091 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.js +13013 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/types/data-structures/base/iterable-element-base.d.ts +219 -0
  15. package/dist/types/data-structures/base/iterable-entry-base.d.ts +144 -0
  16. package/dist/types/data-structures/base/linear-base.d.ts +335 -0
  17. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +182 -0
  18. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +135 -0
  19. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +291 -0
  20. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +754 -0
  21. package/dist/types/data-structures/binary-tree/bst.d.ts +413 -0
  22. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +208 -0
  23. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +190 -0
  24. package/dist/{esm → types}/data-structures/binary-tree/tree-multi-map.d.ts +72 -69
  25. package/dist/types/data-structures/graph/abstract-graph.d.ts +340 -0
  26. package/dist/types/data-structures/graph/directed-graph.d.ts +207 -0
  27. package/dist/types/data-structures/graph/map-graph.d.ts +78 -0
  28. package/dist/types/data-structures/graph/undirected-graph.d.ts +188 -0
  29. package/dist/types/data-structures/hash/hash-map.d.ts +345 -0
  30. package/dist/types/data-structures/heap/heap.d.ts +503 -0
  31. package/dist/types/data-structures/heap/max-heap.d.ts +32 -0
  32. package/dist/types/data-structures/heap/min-heap.d.ts +33 -0
  33. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +769 -0
  34. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +451 -0
  35. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +27 -0
  36. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +27 -0
  37. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +26 -0
  38. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +15 -0
  39. package/dist/types/data-structures/queue/deque.d.ts +431 -0
  40. package/dist/types/data-structures/queue/queue.d.ts +308 -0
  41. package/dist/{cjs → types}/data-structures/stack/stack.d.ts +124 -102
  42. package/dist/types/data-structures/trie/trie.d.ts +350 -0
  43. package/dist/types/interfaces/binary-tree.d.ts +59 -0
  44. package/dist/types/interfaces/graph.d.ts +21 -0
  45. package/dist/{cjs → types}/types/data-structures/base/base.d.ts +1 -1
  46. package/dist/{esm → types}/types/data-structures/graph/abstract-graph.d.ts +4 -0
  47. package/dist/{cjs → types}/types/utils/utils.d.ts +1 -0
  48. package/dist/{esm → types}/utils/utils.d.ts +1 -1
  49. package/dist/umd/data-structure-typed.js +4693 -6484
  50. package/dist/umd/data-structure-typed.js.map +1 -0
  51. package/dist/umd/data-structure-typed.min.js +8 -6
  52. package/dist/umd/data-structure-typed.min.js.map +1 -1
  53. package/jest.integration.config.js +3 -0
  54. package/package.json +13 -12
  55. package/src/data-structures/base/iterable-element-base.ts +238 -115
  56. package/src/data-structures/base/iterable-entry-base.ts +96 -120
  57. package/src/data-structures/base/linear-base.ts +271 -277
  58. package/src/data-structures/binary-tree/avl-tree-counter.ts +196 -217
  59. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +188 -102
  60. package/src/data-structures/binary-tree/avl-tree.ts +237 -206
  61. package/src/data-structures/binary-tree/binary-tree.ts +665 -896
  62. package/src/data-structures/binary-tree/bst.ts +565 -572
  63. package/src/data-structures/binary-tree/red-black-tree.ts +157 -223
  64. package/src/data-structures/binary-tree/tree-counter.ts +195 -219
  65. package/src/data-structures/binary-tree/tree-multi-map.ts +127 -98
  66. package/src/data-structures/graph/abstract-graph.ts +339 -264
  67. package/src/data-structures/graph/directed-graph.ts +146 -236
  68. package/src/data-structures/graph/map-graph.ts +63 -60
  69. package/src/data-structures/graph/undirected-graph.ts +129 -152
  70. package/src/data-structures/hash/hash-map.ts +274 -496
  71. package/src/data-structures/heap/heap.ts +389 -402
  72. package/src/data-structures/heap/max-heap.ts +12 -76
  73. package/src/data-structures/heap/min-heap.ts +13 -76
  74. package/src/data-structures/linked-list/doubly-linked-list.ts +426 -530
  75. package/src/data-structures/linked-list/singly-linked-list.ts +495 -517
  76. package/src/data-structures/linked-list/skip-linked-list.ts +1 -108
  77. package/src/data-structures/priority-queue/max-priority-queue.ts +12 -87
  78. package/src/data-structures/priority-queue/min-priority-queue.ts +11 -88
  79. package/src/data-structures/priority-queue/priority-queue.ts +3 -92
  80. package/src/data-structures/queue/deque.ts +381 -357
  81. package/src/data-structures/queue/queue.ts +310 -264
  82. package/src/data-structures/stack/stack.ts +217 -131
  83. package/src/data-structures/trie/trie.ts +240 -175
  84. package/src/interfaces/binary-tree.ts +240 -6
  85. package/src/interfaces/graph.ts +37 -0
  86. package/src/types/data-structures/base/base.ts +5 -5
  87. package/src/types/data-structures/graph/abstract-graph.ts +5 -0
  88. package/src/types/utils/utils.ts +2 -0
  89. package/src/utils/utils.ts +9 -14
  90. package/test/integration/all-in-one.test.ts +1 -1
  91. package/test/integration/index.html +1 -1
  92. package/test/performance/benchmark-runner.ts +528 -0
  93. package/test/performance/data-structures/comparison/comparison.test.ts +27 -57
  94. package/test/performance/reportor.mjs +43 -43
  95. package/test/performance/runner-config.json +39 -0
  96. package/test/performance/single-suite-runner.ts +69 -0
  97. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +3 -3
  98. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +5 -5
  99. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +4 -4
  100. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +350 -90
  101. package/test/unit/data-structures/binary-tree/bst.test.ts +12 -9
  102. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +2 -2
  103. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +25 -24
  104. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +112 -4
  105. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -4
  106. package/test/unit/data-structures/graph/directed-graph.test.ts +1 -1
  107. package/test/unit/data-structures/heap/heap.test.ts +14 -21
  108. package/test/unit/data-structures/heap/max-heap.test.ts +5 -9
  109. package/test/unit/data-structures/heap/min-heap.test.ts +1 -4
  110. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +14 -14
  111. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -7
  112. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +8 -11
  113. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -4
  114. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +1 -4
  115. package/test/unit/data-structures/queue/queue.test.ts +4 -5
  116. package/test/unit/utils/utils.test.ts +0 -1
  117. package/tsconfig-base.json +20 -20
  118. package/tsconfig-types.json +17 -0
  119. package/tsconfig.test.json +8 -0
  120. package/tsup.config.js +11 -22
  121. package/tsup.node.config.ts +37 -0
  122. package/dist/cjs/common/index.js +0 -29
  123. package/dist/cjs/common/index.js.map +0 -1
  124. package/dist/cjs/data-structures/base/index.js +0 -19
  125. package/dist/cjs/data-structures/base/index.js.map +0 -1
  126. package/dist/cjs/data-structures/base/iterable-element-base.d.ts +0 -116
  127. package/dist/cjs/data-structures/base/iterable-element-base.js +0 -202
  128. package/dist/cjs/data-structures/base/iterable-element-base.js.map +0 -1
  129. package/dist/cjs/data-structures/base/iterable-entry-base.d.ts +0 -168
  130. package/dist/cjs/data-structures/base/iterable-entry-base.js +0 -241
  131. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +0 -1
  132. package/dist/cjs/data-structures/base/linear-base.d.ts +0 -277
  133. package/dist/cjs/data-structures/base/linear-base.js +0 -553
  134. package/dist/cjs/data-structures/base/linear-base.js.map +0 -1
  135. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +0 -214
  136. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +0 -409
  137. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  138. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -104
  139. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +0 -203
  140. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  141. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +0 -302
  142. package/dist/cjs/data-structures/binary-tree/avl-tree.js +0 -599
  143. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +0 -1
  144. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +0 -295
  145. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  146. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +0 -910
  147. package/dist/cjs/data-structures/binary-tree/binary-tree.js +0 -2197
  148. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +0 -1
  149. package/dist/cjs/data-structures/binary-tree/bst.d.ts +0 -461
  150. package/dist/cjs/data-structures/binary-tree/bst.js +0 -880
  151. package/dist/cjs/data-structures/binary-tree/bst.js.map +0 -1
  152. package/dist/cjs/data-structures/binary-tree/index.js +0 -27
  153. package/dist/cjs/data-structures/binary-tree/index.js.map +0 -1
  154. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +0 -280
  155. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +0 -642
  156. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +0 -1
  157. package/dist/cjs/data-structures/binary-tree/segment-tree.js +0 -298
  158. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +0 -1
  159. package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +0 -212
  160. package/dist/cjs/data-structures/binary-tree/tree-counter.js +0 -445
  161. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +0 -1
  162. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +0 -267
  163. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +0 -365
  164. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  165. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +0 -335
  166. package/dist/cjs/data-structures/graph/abstract-graph.js +0 -867
  167. package/dist/cjs/data-structures/graph/abstract-graph.js.map +0 -1
  168. package/dist/cjs/data-structures/graph/directed-graph.d.ts +0 -323
  169. package/dist/cjs/data-structures/graph/directed-graph.js +0 -613
  170. package/dist/cjs/data-structures/graph/directed-graph.js.map +0 -1
  171. package/dist/cjs/data-structures/graph/index.js +0 -21
  172. package/dist/cjs/data-structures/graph/index.js.map +0 -1
  173. package/dist/cjs/data-structures/graph/map-graph.d.ts +0 -84
  174. package/dist/cjs/data-structures/graph/map-graph.js +0 -111
  175. package/dist/cjs/data-structures/graph/map-graph.js.map +0 -1
  176. package/dist/cjs/data-structures/graph/undirected-graph.d.ts +0 -231
  177. package/dist/cjs/data-structures/graph/undirected-graph.js +0 -445
  178. package/dist/cjs/data-structures/graph/undirected-graph.js.map +0 -1
  179. package/dist/cjs/data-structures/hash/hash-map.d.ts +0 -519
  180. package/dist/cjs/data-structures/hash/hash-map.js +0 -880
  181. package/dist/cjs/data-structures/hash/hash-map.js.map +0 -1
  182. package/dist/cjs/data-structures/hash/index.js +0 -18
  183. package/dist/cjs/data-structures/hash/index.js.map +0 -1
  184. package/dist/cjs/data-structures/heap/heap.d.ts +0 -578
  185. package/dist/cjs/data-structures/heap/heap.js +0 -911
  186. package/dist/cjs/data-structures/heap/heap.js.map +0 -1
  187. package/dist/cjs/data-structures/heap/index.js +0 -20
  188. package/dist/cjs/data-structures/heap/index.js.map +0 -1
  189. package/dist/cjs/data-structures/heap/max-heap.d.ts +0 -68
  190. package/dist/cjs/data-structures/heap/max-heap.js +0 -96
  191. package/dist/cjs/data-structures/heap/max-heap.js.map +0 -1
  192. package/dist/cjs/data-structures/heap/min-heap.d.ts +0 -68
  193. package/dist/cjs/data-structures/heap/min-heap.js +0 -87
  194. package/dist/cjs/data-structures/heap/min-heap.js.map +0 -1
  195. package/dist/cjs/data-structures/index.js +0 -29
  196. package/dist/cjs/data-structures/index.js.map +0 -1
  197. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +0 -885
  198. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +0 -1238
  199. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  200. package/dist/cjs/data-structures/linked-list/index.js +0 -20
  201. package/dist/cjs/data-structures/linked-list/index.js.map +0 -1
  202. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +0 -500
  203. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +0 -870
  204. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +0 -1
  205. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +0 -134
  206. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +0 -245
  207. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +0 -1
  208. package/dist/cjs/data-structures/matrix/index.js +0 -19
  209. package/dist/cjs/data-structures/matrix/index.js.map +0 -1
  210. package/dist/cjs/data-structures/matrix/matrix.js +0 -449
  211. package/dist/cjs/data-structures/matrix/matrix.js.map +0 -1
  212. package/dist/cjs/data-structures/matrix/navigator.js +0 -112
  213. package/dist/cjs/data-structures/matrix/navigator.js.map +0 -1
  214. package/dist/cjs/data-structures/priority-queue/index.js +0 -20
  215. package/dist/cjs/data-structures/priority-queue/index.js.map +0 -1
  216. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +0 -71
  217. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +0 -102
  218. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  219. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +0 -72
  220. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +0 -94
  221. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  222. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +0 -74
  223. package/dist/cjs/data-structures/priority-queue/priority-queue.js +0 -96
  224. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +0 -1
  225. package/dist/cjs/data-structures/queue/deque.d.ts +0 -458
  226. package/dist/cjs/data-structures/queue/deque.js +0 -919
  227. package/dist/cjs/data-structures/queue/deque.js.map +0 -1
  228. package/dist/cjs/data-structures/queue/index.js +0 -19
  229. package/dist/cjs/data-structures/queue/index.js.map +0 -1
  230. package/dist/cjs/data-structures/queue/queue.d.ts +0 -329
  231. package/dist/cjs/data-structures/queue/queue.js +0 -457
  232. package/dist/cjs/data-structures/queue/queue.js.map +0 -1
  233. package/dist/cjs/data-structures/stack/index.js +0 -18
  234. package/dist/cjs/data-structures/stack/index.js.map +0 -1
  235. package/dist/cjs/data-structures/stack/stack.js +0 -346
  236. package/dist/cjs/data-structures/stack/stack.js.map +0 -1
  237. package/dist/cjs/data-structures/tree/index.js +0 -18
  238. package/dist/cjs/data-structures/tree/index.js.map +0 -1
  239. package/dist/cjs/data-structures/tree/tree.js +0 -108
  240. package/dist/cjs/data-structures/tree/tree.js.map +0 -1
  241. package/dist/cjs/data-structures/trie/index.js +0 -18
  242. package/dist/cjs/data-structures/trie/index.js.map +0 -1
  243. package/dist/cjs/data-structures/trie/trie.d.ts +0 -351
  244. package/dist/cjs/data-structures/trie/trie.js +0 -594
  245. package/dist/cjs/data-structures/trie/trie.js.map +0 -1
  246. package/dist/cjs/index.js +0 -22
  247. package/dist/cjs/index.js.map +0 -1
  248. package/dist/cjs/interfaces/binary-tree.d.ts +0 -9
  249. package/dist/cjs/interfaces/binary-tree.js +0 -3
  250. package/dist/cjs/interfaces/binary-tree.js.map +0 -1
  251. package/dist/cjs/interfaces/doubly-linked-list.js +0 -3
  252. package/dist/cjs/interfaces/doubly-linked-list.js.map +0 -1
  253. package/dist/cjs/interfaces/graph.d.ts +0 -5
  254. package/dist/cjs/interfaces/graph.js +0 -3
  255. package/dist/cjs/interfaces/graph.js.map +0 -1
  256. package/dist/cjs/interfaces/heap.js +0 -3
  257. package/dist/cjs/interfaces/heap.js.map +0 -1
  258. package/dist/cjs/interfaces/index.js +0 -25
  259. package/dist/cjs/interfaces/index.js.map +0 -1
  260. package/dist/cjs/interfaces/navigator.js +0 -3
  261. package/dist/cjs/interfaces/navigator.js.map +0 -1
  262. package/dist/cjs/interfaces/priority-queue.js +0 -3
  263. package/dist/cjs/interfaces/priority-queue.js.map +0 -1
  264. package/dist/cjs/interfaces/segment-tree.js +0 -3
  265. package/dist/cjs/interfaces/segment-tree.js.map +0 -1
  266. package/dist/cjs/interfaces/singly-linked-list.js +0 -3
  267. package/dist/cjs/interfaces/singly-linked-list.js.map +0 -1
  268. package/dist/cjs/types/common.js +0 -3
  269. package/dist/cjs/types/common.js.map +0 -1
  270. package/dist/cjs/types/data-structures/base/base.js +0 -3
  271. package/dist/cjs/types/data-structures/base/base.js.map +0 -1
  272. package/dist/cjs/types/data-structures/base/index.js +0 -18
  273. package/dist/cjs/types/data-structures/base/index.js.map +0 -1
  274. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js +0 -3
  275. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  276. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -3
  277. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  278. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js +0 -3
  279. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  280. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js +0 -3
  281. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  282. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js +0 -3
  283. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  284. package/dist/cjs/types/data-structures/binary-tree/bst.js +0 -3
  285. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +0 -1
  286. package/dist/cjs/types/data-structures/binary-tree/index.js +0 -26
  287. package/dist/cjs/types/data-structures/binary-tree/index.js.map +0 -1
  288. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js +0 -3
  289. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js.map +0 -1
  290. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js +0 -3
  291. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  292. package/dist/cjs/types/data-structures/binary-tree/tree-counter.js +0 -3
  293. package/dist/cjs/types/data-structures/binary-tree/tree-counter.js.map +0 -1
  294. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.js +0 -3
  295. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  296. package/dist/cjs/types/data-structures/graph/abstract-graph.d.ts +0 -10
  297. package/dist/cjs/types/data-structures/graph/abstract-graph.js +0 -3
  298. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +0 -1
  299. package/dist/cjs/types/data-structures/graph/directed-graph.js +0 -3
  300. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +0 -1
  301. package/dist/cjs/types/data-structures/graph/index.js +0 -20
  302. package/dist/cjs/types/data-structures/graph/index.js.map +0 -1
  303. package/dist/cjs/types/data-structures/graph/map-graph.js +0 -3
  304. package/dist/cjs/types/data-structures/graph/map-graph.js.map +0 -1
  305. package/dist/cjs/types/data-structures/graph/undirected-graph.js +0 -3
  306. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +0 -1
  307. package/dist/cjs/types/data-structures/hash/hash-map.js +0 -3
  308. package/dist/cjs/types/data-structures/hash/hash-map.js.map +0 -1
  309. package/dist/cjs/types/data-structures/hash/index.js +0 -18
  310. package/dist/cjs/types/data-structures/hash/index.js.map +0 -1
  311. package/dist/cjs/types/data-structures/heap/heap.js +0 -3
  312. package/dist/cjs/types/data-structures/heap/heap.js.map +0 -1
  313. package/dist/cjs/types/data-structures/heap/index.js +0 -18
  314. package/dist/cjs/types/data-structures/heap/index.js.map +0 -1
  315. package/dist/cjs/types/data-structures/heap/max-heap.js +0 -3
  316. package/dist/cjs/types/data-structures/heap/max-heap.js.map +0 -1
  317. package/dist/cjs/types/data-structures/heap/min-heap.js +0 -3
  318. package/dist/cjs/types/data-structures/heap/min-heap.js.map +0 -1
  319. package/dist/cjs/types/data-structures/index.js +0 -29
  320. package/dist/cjs/types/data-structures/index.js.map +0 -1
  321. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js +0 -3
  322. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  323. package/dist/cjs/types/data-structures/linked-list/index.js +0 -20
  324. package/dist/cjs/types/data-structures/linked-list/index.js.map +0 -1
  325. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js +0 -3
  326. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  327. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js +0 -3
  328. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  329. package/dist/cjs/types/data-structures/matrix/index.js +0 -19
  330. package/dist/cjs/types/data-structures/matrix/index.js.map +0 -1
  331. package/dist/cjs/types/data-structures/matrix/matrix.js +0 -3
  332. package/dist/cjs/types/data-structures/matrix/matrix.js.map +0 -1
  333. package/dist/cjs/types/data-structures/matrix/navigator.js +0 -3
  334. package/dist/cjs/types/data-structures/matrix/navigator.js.map +0 -1
  335. package/dist/cjs/types/data-structures/priority-queue/index.js +0 -20
  336. package/dist/cjs/types/data-structures/priority-queue/index.js.map +0 -1
  337. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js +0 -3
  338. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  339. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js +0 -3
  340. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  341. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js +0 -3
  342. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  343. package/dist/cjs/types/data-structures/queue/deque.js +0 -3
  344. package/dist/cjs/types/data-structures/queue/deque.js.map +0 -1
  345. package/dist/cjs/types/data-structures/queue/index.js +0 -19
  346. package/dist/cjs/types/data-structures/queue/index.js.map +0 -1
  347. package/dist/cjs/types/data-structures/queue/queue.js +0 -3
  348. package/dist/cjs/types/data-structures/queue/queue.js.map +0 -1
  349. package/dist/cjs/types/data-structures/stack/index.js +0 -18
  350. package/dist/cjs/types/data-structures/stack/index.js.map +0 -1
  351. package/dist/cjs/types/data-structures/stack/stack.js +0 -3
  352. package/dist/cjs/types/data-structures/stack/stack.js.map +0 -1
  353. package/dist/cjs/types/data-structures/tree/index.js +0 -18
  354. package/dist/cjs/types/data-structures/tree/index.js.map +0 -1
  355. package/dist/cjs/types/data-structures/tree/tree.js +0 -3
  356. package/dist/cjs/types/data-structures/tree/tree.js.map +0 -1
  357. package/dist/cjs/types/data-structures/trie/index.js +0 -18
  358. package/dist/cjs/types/data-structures/trie/index.js.map +0 -1
  359. package/dist/cjs/types/data-structures/trie/trie.js +0 -3
  360. package/dist/cjs/types/data-structures/trie/trie.js.map +0 -1
  361. package/dist/cjs/types/index.js +0 -20
  362. package/dist/cjs/types/index.js.map +0 -1
  363. package/dist/cjs/types/utils/index.js +0 -19
  364. package/dist/cjs/types/utils/index.js.map +0 -1
  365. package/dist/cjs/types/utils/utils.js +0 -3
  366. package/dist/cjs/types/utils/utils.js.map +0 -1
  367. package/dist/cjs/types/utils/validate-type.js +0 -3
  368. package/dist/cjs/types/utils/validate-type.js.map +0 -1
  369. package/dist/cjs/utils/index.js +0 -19
  370. package/dist/cjs/utils/index.js.map +0 -1
  371. package/dist/cjs/utils/number.js +0 -24
  372. package/dist/cjs/utils/number.js.map +0 -1
  373. package/dist/cjs/utils/utils.d.ts +0 -209
  374. package/dist/cjs/utils/utils.js +0 -353
  375. package/dist/cjs/utils/utils.js.map +0 -1
  376. package/dist/esm/common/index.d.ts +0 -12
  377. package/dist/esm/common/index.js +0 -29
  378. package/dist/esm/common/index.js.map +0 -1
  379. package/dist/esm/data-structures/base/index.d.ts +0 -2
  380. package/dist/esm/data-structures/base/index.js +0 -3
  381. package/dist/esm/data-structures/base/index.js.map +0 -1
  382. package/dist/esm/data-structures/base/iterable-element-base.d.ts +0 -116
  383. package/dist/esm/data-structures/base/iterable-element-base.js +0 -199
  384. package/dist/esm/data-structures/base/iterable-element-base.js.map +0 -1
  385. package/dist/esm/data-structures/base/iterable-entry-base.d.ts +0 -168
  386. package/dist/esm/data-structures/base/iterable-entry-base.js +0 -237
  387. package/dist/esm/data-structures/base/iterable-entry-base.js.map +0 -1
  388. package/dist/esm/data-structures/base/linear-base.d.ts +0 -277
  389. package/dist/esm/data-structures/base/linear-base.js +0 -549
  390. package/dist/esm/data-structures/base/linear-base.js.map +0 -1
  391. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +0 -214
  392. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +0 -410
  393. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  394. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -104
  395. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +0 -205
  396. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  397. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +0 -302
  398. package/dist/esm/data-structures/binary-tree/avl-tree.js +0 -601
  399. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +0 -1
  400. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -174
  401. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.js +0 -296
  402. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  403. package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +0 -910
  404. package/dist/esm/data-structures/binary-tree/binary-tree.js +0 -2198
  405. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +0 -1
  406. package/dist/esm/data-structures/binary-tree/bst.d.ts +0 -461
  407. package/dist/esm/data-structures/binary-tree/bst.js +0 -881
  408. package/dist/esm/data-structures/binary-tree/bst.js.map +0 -1
  409. package/dist/esm/data-structures/binary-tree/index.d.ts +0 -10
  410. package/dist/esm/data-structures/binary-tree/index.js +0 -11
  411. package/dist/esm/data-structures/binary-tree/index.js.map +0 -1
  412. package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +0 -280
  413. package/dist/esm/data-structures/binary-tree/red-black-tree.js +0 -641
  414. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +0 -1
  415. package/dist/esm/data-structures/binary-tree/segment-tree.d.ts +0 -160
  416. package/dist/esm/data-structures/binary-tree/segment-tree.js +0 -295
  417. package/dist/esm/data-structures/binary-tree/segment-tree.js.map +0 -1
  418. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +0 -212
  419. package/dist/esm/data-structures/binary-tree/tree-counter.js +0 -446
  420. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +0 -1
  421. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +0 -367
  422. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  423. package/dist/esm/data-structures/graph/abstract-graph.d.ts +0 -335
  424. package/dist/esm/data-structures/graph/abstract-graph.js +0 -862
  425. package/dist/esm/data-structures/graph/abstract-graph.js.map +0 -1
  426. package/dist/esm/data-structures/graph/directed-graph.d.ts +0 -323
  427. package/dist/esm/data-structures/graph/directed-graph.js +0 -609
  428. package/dist/esm/data-structures/graph/directed-graph.js.map +0 -1
  429. package/dist/esm/data-structures/graph/index.d.ts +0 -4
  430. package/dist/esm/data-structures/graph/index.js +0 -5
  431. package/dist/esm/data-structures/graph/index.js.map +0 -1
  432. package/dist/esm/data-structures/graph/map-graph.d.ts +0 -84
  433. package/dist/esm/data-structures/graph/map-graph.js +0 -108
  434. package/dist/esm/data-structures/graph/map-graph.js.map +0 -1
  435. package/dist/esm/data-structures/graph/undirected-graph.d.ts +0 -231
  436. package/dist/esm/data-structures/graph/undirected-graph.js +0 -439
  437. package/dist/esm/data-structures/graph/undirected-graph.js.map +0 -1
  438. package/dist/esm/data-structures/hash/hash-map.d.ts +0 -519
  439. package/dist/esm/data-structures/hash/hash-map.js +0 -878
  440. package/dist/esm/data-structures/hash/hash-map.js.map +0 -1
  441. package/dist/esm/data-structures/hash/index.d.ts +0 -1
  442. package/dist/esm/data-structures/hash/index.js +0 -2
  443. package/dist/esm/data-structures/hash/index.js.map +0 -1
  444. package/dist/esm/data-structures/heap/heap.d.ts +0 -578
  445. package/dist/esm/data-structures/heap/heap.js +0 -914
  446. package/dist/esm/data-structures/heap/heap.js.map +0 -1
  447. package/dist/esm/data-structures/heap/index.d.ts +0 -3
  448. package/dist/esm/data-structures/heap/index.js +0 -4
  449. package/dist/esm/data-structures/heap/index.js.map +0 -1
  450. package/dist/esm/data-structures/heap/max-heap.d.ts +0 -68
  451. package/dist/esm/data-structures/heap/max-heap.js +0 -95
  452. package/dist/esm/data-structures/heap/max-heap.js.map +0 -1
  453. package/dist/esm/data-structures/heap/min-heap.d.ts +0 -68
  454. package/dist/esm/data-structures/heap/min-heap.js +0 -83
  455. package/dist/esm/data-structures/heap/min-heap.js.map +0 -1
  456. package/dist/esm/data-structures/index.d.ts +0 -12
  457. package/dist/esm/data-structures/index.js +0 -13
  458. package/dist/esm/data-structures/index.js.map +0 -1
  459. package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +0 -885
  460. package/dist/esm/data-structures/linked-list/doubly-linked-list.js +0 -1236
  461. package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  462. package/dist/esm/data-structures/linked-list/index.d.ts +0 -3
  463. package/dist/esm/data-structures/linked-list/index.js +0 -4
  464. package/dist/esm/data-structures/linked-list/index.js.map +0 -1
  465. package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +0 -500
  466. package/dist/esm/data-structures/linked-list/singly-linked-list.js +0 -866
  467. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +0 -1
  468. package/dist/esm/data-structures/linked-list/skip-linked-list.d.ts +0 -134
  469. package/dist/esm/data-structures/linked-list/skip-linked-list.js +0 -243
  470. package/dist/esm/data-structures/linked-list/skip-linked-list.js.map +0 -1
  471. package/dist/esm/data-structures/matrix/index.d.ts +0 -2
  472. package/dist/esm/data-structures/matrix/index.js +0 -3
  473. package/dist/esm/data-structures/matrix/index.js.map +0 -1
  474. package/dist/esm/data-structures/matrix/matrix.d.ts +0 -168
  475. package/dist/esm/data-structures/matrix/matrix.js +0 -444
  476. package/dist/esm/data-structures/matrix/matrix.js.map +0 -1
  477. package/dist/esm/data-structures/matrix/navigator.d.ts +0 -55
  478. package/dist/esm/data-structures/matrix/navigator.js +0 -114
  479. package/dist/esm/data-structures/matrix/navigator.js.map +0 -1
  480. package/dist/esm/data-structures/priority-queue/index.d.ts +0 -3
  481. package/dist/esm/data-structures/priority-queue/index.js +0 -4
  482. package/dist/esm/data-structures/priority-queue/index.js.map +0 -1
  483. package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +0 -71
  484. package/dist/esm/data-structures/priority-queue/max-priority-queue.js +0 -101
  485. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  486. package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +0 -72
  487. package/dist/esm/data-structures/priority-queue/min-priority-queue.js +0 -90
  488. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  489. package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +0 -74
  490. package/dist/esm/data-structures/priority-queue/priority-queue.js +0 -92
  491. package/dist/esm/data-structures/priority-queue/priority-queue.js.map +0 -1
  492. package/dist/esm/data-structures/queue/deque.d.ts +0 -458
  493. package/dist/esm/data-structures/queue/deque.js +0 -915
  494. package/dist/esm/data-structures/queue/deque.js.map +0 -1
  495. package/dist/esm/data-structures/queue/index.d.ts +0 -2
  496. package/dist/esm/data-structures/queue/index.js +0 -3
  497. package/dist/esm/data-structures/queue/index.js.map +0 -1
  498. package/dist/esm/data-structures/queue/queue.d.ts +0 -329
  499. package/dist/esm/data-structures/queue/queue.js +0 -452
  500. package/dist/esm/data-structures/queue/queue.js.map +0 -1
  501. package/dist/esm/data-structures/stack/index.d.ts +0 -1
  502. package/dist/esm/data-structures/stack/index.js +0 -2
  503. package/dist/esm/data-structures/stack/index.js.map +0 -1
  504. package/dist/esm/data-structures/stack/stack.d.ts +0 -284
  505. package/dist/esm/data-structures/stack/stack.js +0 -342
  506. package/dist/esm/data-structures/stack/stack.js.map +0 -1
  507. package/dist/esm/data-structures/tree/index.d.ts +0 -1
  508. package/dist/esm/data-structures/tree/index.js +0 -2
  509. package/dist/esm/data-structures/tree/index.js.map +0 -1
  510. package/dist/esm/data-structures/tree/tree.d.ts +0 -62
  511. package/dist/esm/data-structures/tree/tree.js +0 -107
  512. package/dist/esm/data-structures/tree/tree.js.map +0 -1
  513. package/dist/esm/data-structures/trie/index.d.ts +0 -1
  514. package/dist/esm/data-structures/trie/index.js +0 -2
  515. package/dist/esm/data-structures/trie/index.js.map +0 -1
  516. package/dist/esm/data-structures/trie/trie.d.ts +0 -351
  517. package/dist/esm/data-structures/trie/trie.js +0 -592
  518. package/dist/esm/data-structures/trie/trie.js.map +0 -1
  519. package/dist/esm/index.d.ts +0 -5
  520. package/dist/esm/index.js +0 -6
  521. package/dist/esm/index.js.map +0 -1
  522. package/dist/esm/interfaces/binary-tree.d.ts +0 -9
  523. package/dist/esm/interfaces/binary-tree.js +0 -2
  524. package/dist/esm/interfaces/binary-tree.js.map +0 -1
  525. package/dist/esm/interfaces/doubly-linked-list.d.ts +0 -1
  526. package/dist/esm/interfaces/doubly-linked-list.js +0 -2
  527. package/dist/esm/interfaces/doubly-linked-list.js.map +0 -1
  528. package/dist/esm/interfaces/graph.d.ts +0 -5
  529. package/dist/esm/interfaces/graph.js +0 -2
  530. package/dist/esm/interfaces/graph.js.map +0 -1
  531. package/dist/esm/interfaces/heap.d.ts +0 -1
  532. package/dist/esm/interfaces/heap.js +0 -2
  533. package/dist/esm/interfaces/heap.js.map +0 -1
  534. package/dist/esm/interfaces/index.d.ts +0 -8
  535. package/dist/esm/interfaces/index.js +0 -9
  536. package/dist/esm/interfaces/index.js.map +0 -1
  537. package/dist/esm/interfaces/navigator.d.ts +0 -1
  538. package/dist/esm/interfaces/navigator.js +0 -2
  539. package/dist/esm/interfaces/navigator.js.map +0 -1
  540. package/dist/esm/interfaces/priority-queue.d.ts +0 -1
  541. package/dist/esm/interfaces/priority-queue.js +0 -2
  542. package/dist/esm/interfaces/priority-queue.js.map +0 -1
  543. package/dist/esm/interfaces/segment-tree.d.ts +0 -1
  544. package/dist/esm/interfaces/segment-tree.js +0 -2
  545. package/dist/esm/interfaces/segment-tree.js.map +0 -1
  546. package/dist/esm/interfaces/singly-linked-list.d.ts +0 -1
  547. package/dist/esm/interfaces/singly-linked-list.js +0 -2
  548. package/dist/esm/interfaces/singly-linked-list.js.map +0 -1
  549. package/dist/esm/types/common.d.ts +0 -15
  550. package/dist/esm/types/common.js +0 -2
  551. package/dist/esm/types/common.js.map +0 -1
  552. package/dist/esm/types/data-structures/base/base.d.ts +0 -13
  553. package/dist/esm/types/data-structures/base/base.js +0 -2
  554. package/dist/esm/types/data-structures/base/base.js.map +0 -1
  555. package/dist/esm/types/data-structures/base/index.d.ts +0 -1
  556. package/dist/esm/types/data-structures/base/index.js +0 -2
  557. package/dist/esm/types/data-structures/base/index.js.map +0 -1
  558. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.d.ts +0 -2
  559. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js +0 -2
  560. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  561. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -2
  562. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -2
  563. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  564. package/dist/esm/types/data-structures/binary-tree/avl-tree.d.ts +0 -2
  565. package/dist/esm/types/data-structures/binary-tree/avl-tree.js +0 -2
  566. package/dist/esm/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  567. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -1
  568. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.js +0 -2
  569. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  570. package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +0 -29
  571. package/dist/esm/types/data-structures/binary-tree/binary-tree.js +0 -2
  572. package/dist/esm/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  573. package/dist/esm/types/data-structures/binary-tree/bst.d.ts +0 -12
  574. package/dist/esm/types/data-structures/binary-tree/bst.js +0 -2
  575. package/dist/esm/types/data-structures/binary-tree/bst.js.map +0 -1
  576. package/dist/esm/types/data-structures/binary-tree/index.d.ts +0 -9
  577. package/dist/esm/types/data-structures/binary-tree/index.js +0 -10
  578. package/dist/esm/types/data-structures/binary-tree/index.js.map +0 -1
  579. package/dist/esm/types/data-structures/binary-tree/red-black-tree.d.ts +0 -3
  580. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js +0 -2
  581. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js.map +0 -1
  582. package/dist/esm/types/data-structures/binary-tree/segment-tree.d.ts +0 -1
  583. package/dist/esm/types/data-structures/binary-tree/segment-tree.js +0 -2
  584. package/dist/esm/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  585. package/dist/esm/types/data-structures/binary-tree/tree-counter.d.ts +0 -2
  586. package/dist/esm/types/data-structures/binary-tree/tree-counter.js +0 -2
  587. package/dist/esm/types/data-structures/binary-tree/tree-counter.js.map +0 -1
  588. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +0 -2
  589. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.js +0 -2
  590. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  591. package/dist/esm/types/data-structures/graph/abstract-graph.js +0 -2
  592. package/dist/esm/types/data-structures/graph/abstract-graph.js.map +0 -1
  593. package/dist/esm/types/data-structures/graph/directed-graph.d.ts +0 -1
  594. package/dist/esm/types/data-structures/graph/directed-graph.js +0 -2
  595. package/dist/esm/types/data-structures/graph/directed-graph.js.map +0 -1
  596. package/dist/esm/types/data-structures/graph/index.d.ts +0 -3
  597. package/dist/esm/types/data-structures/graph/index.js +0 -4
  598. package/dist/esm/types/data-structures/graph/index.js.map +0 -1
  599. package/dist/esm/types/data-structures/graph/map-graph.d.ts +0 -1
  600. package/dist/esm/types/data-structures/graph/map-graph.js +0 -2
  601. package/dist/esm/types/data-structures/graph/map-graph.js.map +0 -1
  602. package/dist/esm/types/data-structures/graph/undirected-graph.d.ts +0 -1
  603. package/dist/esm/types/data-structures/graph/undirected-graph.js +0 -2
  604. package/dist/esm/types/data-structures/graph/undirected-graph.js.map +0 -1
  605. package/dist/esm/types/data-structures/hash/hash-map.d.ts +0 -19
  606. package/dist/esm/types/data-structures/hash/hash-map.js +0 -2
  607. package/dist/esm/types/data-structures/hash/hash-map.js.map +0 -1
  608. package/dist/esm/types/data-structures/hash/index.d.ts +0 -2
  609. package/dist/esm/types/data-structures/hash/index.js +0 -2
  610. package/dist/esm/types/data-structures/hash/index.js.map +0 -1
  611. package/dist/esm/types/data-structures/heap/heap.d.ts +0 -5
  612. package/dist/esm/types/data-structures/heap/heap.js +0 -2
  613. package/dist/esm/types/data-structures/heap/heap.js.map +0 -1
  614. package/dist/esm/types/data-structures/heap/index.d.ts +0 -1
  615. package/dist/esm/types/data-structures/heap/index.js +0 -2
  616. package/dist/esm/types/data-structures/heap/index.js.map +0 -1
  617. package/dist/esm/types/data-structures/heap/max-heap.d.ts +0 -1
  618. package/dist/esm/types/data-structures/heap/max-heap.js +0 -2
  619. package/dist/esm/types/data-structures/heap/max-heap.js.map +0 -1
  620. package/dist/esm/types/data-structures/heap/min-heap.d.ts +0 -1
  621. package/dist/esm/types/data-structures/heap/min-heap.js +0 -2
  622. package/dist/esm/types/data-structures/heap/min-heap.js.map +0 -1
  623. package/dist/esm/types/data-structures/index.d.ts +0 -12
  624. package/dist/esm/types/data-structures/index.js +0 -13
  625. package/dist/esm/types/data-structures/index.js.map +0 -1
  626. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -2
  627. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.js +0 -2
  628. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  629. package/dist/esm/types/data-structures/linked-list/index.d.ts +0 -3
  630. package/dist/esm/types/data-structures/linked-list/index.js +0 -4
  631. package/dist/esm/types/data-structures/linked-list/index.js.map +0 -1
  632. package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +0 -2
  633. package/dist/esm/types/data-structures/linked-list/singly-linked-list.js +0 -2
  634. package/dist/esm/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  635. package/dist/esm/types/data-structures/linked-list/skip-linked-list.d.ts +0 -4
  636. package/dist/esm/types/data-structures/linked-list/skip-linked-list.js +0 -2
  637. package/dist/esm/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  638. package/dist/esm/types/data-structures/matrix/index.d.ts +0 -2
  639. package/dist/esm/types/data-structures/matrix/index.js +0 -3
  640. package/dist/esm/types/data-structures/matrix/index.js.map +0 -1
  641. package/dist/esm/types/data-structures/matrix/matrix.d.ts +0 -7
  642. package/dist/esm/types/data-structures/matrix/matrix.js +0 -2
  643. package/dist/esm/types/data-structures/matrix/matrix.js.map +0 -1
  644. package/dist/esm/types/data-structures/matrix/navigator.d.ts +0 -14
  645. package/dist/esm/types/data-structures/matrix/navigator.js +0 -2
  646. package/dist/esm/types/data-structures/matrix/navigator.js.map +0 -1
  647. package/dist/esm/types/data-structures/priority-queue/index.d.ts +0 -3
  648. package/dist/esm/types/data-structures/priority-queue/index.js +0 -4
  649. package/dist/esm/types/data-structures/priority-queue/index.js.map +0 -1
  650. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -1
  651. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.js +0 -2
  652. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  653. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -1
  654. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.js +0 -2
  655. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  656. package/dist/esm/types/data-structures/priority-queue/priority-queue.d.ts +0 -2
  657. package/dist/esm/types/data-structures/priority-queue/priority-queue.js +0 -2
  658. package/dist/esm/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  659. package/dist/esm/types/data-structures/queue/deque.d.ts +0 -4
  660. package/dist/esm/types/data-structures/queue/deque.js +0 -2
  661. package/dist/esm/types/data-structures/queue/deque.js.map +0 -1
  662. package/dist/esm/types/data-structures/queue/index.d.ts +0 -2
  663. package/dist/esm/types/data-structures/queue/index.js +0 -3
  664. package/dist/esm/types/data-structures/queue/index.js.map +0 -1
  665. package/dist/esm/types/data-structures/queue/queue.d.ts +0 -4
  666. package/dist/esm/types/data-structures/queue/queue.js +0 -2
  667. package/dist/esm/types/data-structures/queue/queue.js.map +0 -1
  668. package/dist/esm/types/data-structures/stack/index.d.ts +0 -1
  669. package/dist/esm/types/data-structures/stack/index.js +0 -2
  670. package/dist/esm/types/data-structures/stack/index.js.map +0 -1
  671. package/dist/esm/types/data-structures/stack/stack.d.ts +0 -2
  672. package/dist/esm/types/data-structures/stack/stack.js +0 -2
  673. package/dist/esm/types/data-structures/stack/stack.js.map +0 -1
  674. package/dist/esm/types/data-structures/tree/index.d.ts +0 -1
  675. package/dist/esm/types/data-structures/tree/index.js +0 -2
  676. package/dist/esm/types/data-structures/tree/index.js.map +0 -1
  677. package/dist/esm/types/data-structures/tree/tree.d.ts +0 -1
  678. package/dist/esm/types/data-structures/tree/tree.js +0 -2
  679. package/dist/esm/types/data-structures/tree/tree.js.map +0 -1
  680. package/dist/esm/types/data-structures/trie/index.d.ts +0 -1
  681. package/dist/esm/types/data-structures/trie/index.js +0 -2
  682. package/dist/esm/types/data-structures/trie/index.js.map +0 -1
  683. package/dist/esm/types/data-structures/trie/trie.d.ts +0 -4
  684. package/dist/esm/types/data-structures/trie/trie.js +0 -2
  685. package/dist/esm/types/data-structures/trie/trie.js.map +0 -1
  686. package/dist/esm/types/index.d.ts +0 -3
  687. package/dist/esm/types/index.js +0 -4
  688. package/dist/esm/types/index.js.map +0 -1
  689. package/dist/esm/types/utils/index.d.ts +0 -2
  690. package/dist/esm/types/utils/index.js +0 -3
  691. package/dist/esm/types/utils/index.js.map +0 -1
  692. package/dist/esm/types/utils/utils.d.ts +0 -21
  693. package/dist/esm/types/utils/utils.js +0 -2
  694. package/dist/esm/types/utils/utils.js.map +0 -1
  695. package/dist/esm/types/utils/validate-type.d.ts +0 -19
  696. package/dist/esm/types/utils/validate-type.js +0 -2
  697. package/dist/esm/types/utils/validate-type.js.map +0 -1
  698. package/dist/esm/utils/index.d.ts +0 -2
  699. package/dist/esm/utils/index.js +0 -3
  700. package/dist/esm/utils/index.js.map +0 -1
  701. package/dist/esm/utils/number.d.ts +0 -14
  702. package/dist/esm/utils/number.js +0 -21
  703. package/dist/esm/utils/number.js.map +0 -1
  704. package/dist/esm/utils/utils.js +0 -324
  705. package/dist/esm/utils/utils.js.map +0 -1
  706. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -71
  707. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -81
  708. package/tsconfig-cjs.json +0 -14
  709. package/tsconfig-esm.json +0 -14
  710. /package/dist/{cjs → types}/common/index.d.ts +0 -0
  711. /package/dist/{cjs → types}/data-structures/base/index.d.ts +0 -0
  712. /package/dist/{cjs → types}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  713. /package/dist/{cjs → types}/data-structures/binary-tree/index.d.ts +0 -0
  714. /package/dist/{cjs → types}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  715. /package/dist/{cjs → types}/data-structures/graph/index.d.ts +0 -0
  716. /package/dist/{cjs → types}/data-structures/hash/index.d.ts +0 -0
  717. /package/dist/{cjs → types}/data-structures/heap/index.d.ts +0 -0
  718. /package/dist/{cjs → types}/data-structures/index.d.ts +0 -0
  719. /package/dist/{cjs → types}/data-structures/linked-list/index.d.ts +0 -0
  720. /package/dist/{cjs → types}/data-structures/matrix/index.d.ts +0 -0
  721. /package/dist/{cjs → types}/data-structures/matrix/matrix.d.ts +0 -0
  722. /package/dist/{cjs → types}/data-structures/matrix/navigator.d.ts +0 -0
  723. /package/dist/{cjs → types}/data-structures/priority-queue/index.d.ts +0 -0
  724. /package/dist/{cjs → types}/data-structures/queue/index.d.ts +0 -0
  725. /package/dist/{cjs → types}/data-structures/stack/index.d.ts +0 -0
  726. /package/dist/{cjs → types}/data-structures/tree/index.d.ts +0 -0
  727. /package/dist/{cjs → types}/data-structures/tree/tree.d.ts +0 -0
  728. /package/dist/{cjs → types}/data-structures/trie/index.d.ts +0 -0
  729. /package/dist/{cjs → types}/index.d.ts +0 -0
  730. /package/dist/{cjs → types}/interfaces/doubly-linked-list.d.ts +0 -0
  731. /package/dist/{cjs → types}/interfaces/heap.d.ts +0 -0
  732. /package/dist/{cjs → types}/interfaces/index.d.ts +0 -0
  733. /package/dist/{cjs → types}/interfaces/navigator.d.ts +0 -0
  734. /package/dist/{cjs → types}/interfaces/priority-queue.d.ts +0 -0
  735. /package/dist/{cjs → types}/interfaces/segment-tree.d.ts +0 -0
  736. /package/dist/{cjs → types}/interfaces/singly-linked-list.d.ts +0 -0
  737. /package/dist/{cjs → types}/types/common.d.ts +0 -0
  738. /package/dist/{cjs → types}/types/data-structures/base/index.d.ts +0 -0
  739. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree-counter.d.ts +0 -0
  740. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -0
  741. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree.d.ts +0 -0
  742. /package/dist/{cjs → types}/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  743. /package/dist/{cjs → types}/types/data-structures/binary-tree/binary-tree.d.ts +0 -0
  744. /package/dist/{cjs → types}/types/data-structures/binary-tree/bst.d.ts +0 -0
  745. /package/dist/{cjs → types}/types/data-structures/binary-tree/index.d.ts +0 -0
  746. /package/dist/{cjs → types}/types/data-structures/binary-tree/red-black-tree.d.ts +0 -0
  747. /package/dist/{cjs → types}/types/data-structures/binary-tree/segment-tree.d.ts +0 -0
  748. /package/dist/{cjs → types}/types/data-structures/binary-tree/tree-counter.d.ts +0 -0
  749. /package/dist/{cjs → types}/types/data-structures/binary-tree/tree-multi-map.d.ts +0 -0
  750. /package/dist/{cjs → types}/types/data-structures/graph/directed-graph.d.ts +0 -0
  751. /package/dist/{cjs → types}/types/data-structures/graph/index.d.ts +0 -0
  752. /package/dist/{cjs → types}/types/data-structures/graph/map-graph.d.ts +0 -0
  753. /package/dist/{cjs → types}/types/data-structures/graph/undirected-graph.d.ts +0 -0
  754. /package/dist/{cjs → types}/types/data-structures/hash/hash-map.d.ts +0 -0
  755. /package/dist/{cjs → types}/types/data-structures/hash/index.d.ts +0 -0
  756. /package/dist/{cjs → types}/types/data-structures/heap/heap.d.ts +0 -0
  757. /package/dist/{cjs → types}/types/data-structures/heap/index.d.ts +0 -0
  758. /package/dist/{cjs → types}/types/data-structures/heap/max-heap.d.ts +0 -0
  759. /package/dist/{cjs → types}/types/data-structures/heap/min-heap.d.ts +0 -0
  760. /package/dist/{cjs → types}/types/data-structures/index.d.ts +0 -0
  761. /package/dist/{cjs → types}/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  762. /package/dist/{cjs → types}/types/data-structures/linked-list/index.d.ts +0 -0
  763. /package/dist/{cjs → types}/types/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  764. /package/dist/{cjs → types}/types/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  765. /package/dist/{cjs → types}/types/data-structures/matrix/index.d.ts +0 -0
  766. /package/dist/{cjs → types}/types/data-structures/matrix/matrix.d.ts +0 -0
  767. /package/dist/{cjs → types}/types/data-structures/matrix/navigator.d.ts +0 -0
  768. /package/dist/{cjs → types}/types/data-structures/priority-queue/index.d.ts +0 -0
  769. /package/dist/{cjs → types}/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  770. /package/dist/{cjs → types}/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  771. /package/dist/{cjs → types}/types/data-structures/priority-queue/priority-queue.d.ts +0 -0
  772. /package/dist/{cjs → types}/types/data-structures/queue/deque.d.ts +0 -0
  773. /package/dist/{cjs → types}/types/data-structures/queue/index.d.ts +0 -0
  774. /package/dist/{cjs → types}/types/data-structures/queue/queue.d.ts +0 -0
  775. /package/dist/{cjs → types}/types/data-structures/stack/index.d.ts +0 -0
  776. /package/dist/{cjs → types}/types/data-structures/stack/stack.d.ts +0 -0
  777. /package/dist/{cjs → types}/types/data-structures/tree/index.d.ts +0 -0
  778. /package/dist/{cjs → types}/types/data-structures/tree/tree.d.ts +0 -0
  779. /package/dist/{cjs → types}/types/data-structures/trie/index.d.ts +0 -0
  780. /package/dist/{cjs → types}/types/data-structures/trie/trie.d.ts +0 -0
  781. /package/dist/{cjs → types}/types/index.d.ts +0 -0
  782. /package/dist/{cjs → types}/types/utils/index.d.ts +0 -0
  783. /package/dist/{cjs → types}/types/utils/validate-type.d.ts +0 -0
  784. /package/dist/{cjs → types}/utils/index.d.ts +0 -0
  785. /package/dist/{cjs → types}/utils/number.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { BinaryTreeNode, BST, BSTNode, Range } from '../../../../src';
1
+ import { BinaryTreeNode, BST, BSTNode, IBinaryTree, Range } from '../../../../src';
2
2
  import { isDebugTest, isTestStackOverflow, SYSTEM_MAX_CALL_STACK } from '../../../config';
3
3
 
4
4
  const isDebug = isDebugTest;
@@ -331,8 +331,7 @@ describe('BST operations test', () => {
331
331
  if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
332
332
 
333
333
  expect(objBST.isAVLBalanced()).toBe(true);
334
-
335
- expect(node15 && objBST.getHeight(node15)).toBe(2);
334
+ expect(node15 && objBST.getHeight(node15)).toBe(1);
336
335
 
337
336
  const removed1 = objBST.delete(1);
338
337
  expect(removed1).toBeInstanceOf(Array);
@@ -775,7 +774,7 @@ describe('BST operations test recursively', () => {
775
774
 
776
775
  expect(objBST.isAVLBalanced()).toBe(true);
777
776
 
778
- expect(node15 && objBST.getHeight(node15)).toBe(2);
777
+ expect(node15 && objBST.getHeight(node15)).toBe(1);
779
778
 
780
779
  const removed1 = objBST.delete(1);
781
780
  expect(removed1).toBeInstanceOf(Array);
@@ -932,7 +931,7 @@ describe('BST operations test recursively', () => {
932
931
  });
933
932
 
934
933
  it('should the clone method', () => {
935
- function checkTreeStructure(bst: BST<string, number>) {
934
+ function checkTreeStructure(bst: IBinaryTree<string, number>) {
936
935
  expect(bst.size).toBe(4);
937
936
  expect(bst.root?.key).toBe('2');
938
937
  expect(bst.root?.left?.key).toBe('1');
@@ -1540,13 +1539,13 @@ describe('BST iterative methods not map mode test', () => {
1540
1539
  describe('BST constructor and comparator edge cases', () => {
1541
1540
  it('should support specifyComparable and isReverse', () => {
1542
1541
  const bst = new BST<number>([], {
1543
- specifyComparable: (k) => -k,
1542
+ specifyComparable: k => -k,
1544
1543
  isReverse: true
1545
1544
  });
1546
1545
  bst.add(1);
1547
1546
  bst.add(2);
1548
1547
  expect(bst.isReverse).toBe(true);
1549
- expect(bst["_specifyComparable"]).toBeDefined();
1548
+ expect(bst['_specifyComparable']).toBeDefined();
1550
1549
  expect([...bst.keys()]).toEqual([2, 1]);
1551
1550
  });
1552
1551
 
@@ -1563,7 +1562,11 @@ describe('BST addMany edge cases', () => {
1563
1562
  const values = ['a', 'b', 'c'];
1564
1563
  const result = bst.addMany(keys, values);
1565
1564
  expect(result).toEqual([true, true, true]);
1566
- expect([...bst]).toEqual([[1, 'a'], [2, 'b'], [3, 'c']]);
1565
+ expect([...bst]).toEqual([
1566
+ [1, 'a'],
1567
+ [2, 'b'],
1568
+ [3, 'c']
1569
+ ]);
1567
1570
  });
1568
1571
 
1569
1572
  it('should addMany with isBalanceAdd=false', () => {
@@ -1608,7 +1611,7 @@ describe('BST _keyValueNodeOrEntryToNodeAndValue edge', () => {
1608
1611
  it('should return [undefined, undefined] for null', () => {
1609
1612
  const bst = new BST<number>();
1610
1613
  // @ts-ignore
1611
- const result = bst["_keyValueNodeOrEntryToNodeAndValue"](null);
1614
+ const result = bst['_keyValueNodeOrEntryToNodeAndValue'](null);
1612
1615
  expect(result).toEqual([undefined, undefined]);
1613
1616
  });
1614
1617
  });
@@ -1,4 +1,4 @@
1
- import { BinaryTreeNode, BSTNode, RedBlackTree, RedBlackTreeNode } from '../../../../src';
1
+ import { BinaryTreeNode, BSTNode, IBinaryTree, RedBlackTree, RedBlackTreeNode } from '../../../../src';
2
2
  import { getRandomInt, getRandomIntArray, magnitude } from '../../../utils';
3
3
  import { OrderedMap } from 'js-sdsl';
4
4
 
@@ -148,7 +148,7 @@ describe('RedBlackTree 1', () => {
148
148
  });
149
149
 
150
150
  it('should the clone method', () => {
151
- function checkTreeStructure(rbTree: RedBlackTree<string, number>) {
151
+ function checkTreeStructure(rbTree: IBinaryTree<string, number>) {
152
152
  expect(rbTree.size).toBe(4);
153
153
  expect(rbTree.root?.key).toBe('2');
154
154
  expect(rbTree.root?.left?.key).toBe('1');
@@ -1,4 +1,4 @@
1
- import { BinaryTreeNode, BSTNode, RedBlackTreeNode, TreeCounter, TreeCounterNode } from '../../../../src';
1
+ import { BinaryTreeNode, BSTNode, IBinaryTree, RedBlackTreeNode, TreeCounter, TreeCounterNode } from '../../../../src';
2
2
  import { isDebugTest } from '../../../config';
3
3
  import { getRandomInt } from '../../../utils';
4
4
 
@@ -172,12 +172,12 @@ describe('TreeCounter operations test1', () => {
172
172
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
173
173
  expect(treeCounter.isPerfectlyBalanced()).toBe(false);
174
174
  treeCounter.perfectlyBalance();
175
- expect(treeCounter.isPerfectlyBalanced()).toBe(false);
175
+ expect(treeCounter.isPerfectlyBalanced()).toBe(true);
176
176
 
177
- expect(treeCounter.isAVLBalanced()).toBe(false);
177
+ expect(treeCounter.isAVLBalanced()).toBe(true);
178
178
 
179
179
  const bfsNodesAfterBalanced = treeCounter.bfs(node => node);
180
- expect(bfsNodesAfterBalanced[0].key).toBe(6);
180
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
181
181
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
182
182
 
183
183
  const removed11 = treeCounter.delete(11, true);
@@ -187,7 +187,7 @@ describe('TreeCounter operations test1', () => {
187
187
 
188
188
  if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
189
189
 
190
- expect(treeCounter.isAVLBalanced()).toBe(false);
190
+ expect(treeCounter.isAVLBalanced()).toBe(true);
191
191
 
192
192
  expect(treeCounter.getHeight(15)).toBe(1);
193
193
 
@@ -197,9 +197,9 @@ describe('TreeCounter operations test1', () => {
197
197
  expect(removed1[0].deleted);
198
198
  if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
199
199
 
200
- expect(treeCounter.isAVLBalanced()).toBe(false);
200
+ expect(treeCounter.isAVLBalanced()).toBe(true);
201
201
 
202
- expect(treeCounter.getHeight()).toBe(5);
202
+ expect(treeCounter.getHeight()).toBe(4);
203
203
 
204
204
  const removed4 = treeCounter.delete(4, true);
205
205
  expect(removed4 instanceof Array);
@@ -207,8 +207,8 @@ describe('TreeCounter operations test1', () => {
207
207
  expect(removed4[0].deleted);
208
208
  if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
209
209
 
210
- expect(treeCounter.isAVLBalanced()).toBe(false);
211
- expect(treeCounter.getHeight()).toBe(5);
210
+ expect(treeCounter.isAVLBalanced()).toBe(true);
211
+ expect(treeCounter.getHeight()).toBe(4);
212
212
 
213
213
  const removed10 = treeCounter.delete(10, true);
214
214
  expect(removed10 instanceof Array);
@@ -225,7 +225,7 @@ describe('TreeCounter operations test1', () => {
225
225
  expect(removed15[0].deleted);
226
226
  if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
227
227
 
228
- expect(treeCounter.isAVLBalanced()).toBe(false);
228
+ expect(treeCounter.isAVLBalanced()).toBe(true);
229
229
  expect(treeCounter.getHeight()).toBe(3);
230
230
 
231
231
  const removed5 = treeCounter.delete(5, true);
@@ -250,7 +250,7 @@ describe('TreeCounter operations test1', () => {
250
250
  expect(removed3[0]);
251
251
  expect(removed3[0].deleted);
252
252
  if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
253
- expect(treeCounter.isAVLBalanced()).toBe(false);
253
+ expect(treeCounter.isAVLBalanced()).toBe(true);
254
254
  expect(treeCounter.getHeight()).toBe(3);
255
255
 
256
256
  const removed8 = treeCounter.delete(8, true);
@@ -440,11 +440,11 @@ describe('TreeCounter operations test recursively1', () => {
440
440
 
441
441
  treeCounter.perfectlyBalance();
442
442
 
443
- expect(treeCounter.isPerfectlyBalanced()).toBe(false);
444
- expect(treeCounter.isAVLBalanced()).toBe(false);
443
+ expect(treeCounter.isPerfectlyBalanced()).toBe(true);
444
+ expect(treeCounter.isAVLBalanced()).toBe(true);
445
445
 
446
446
  const bfsNodesAfterBalanced = treeCounter.bfs(node => node);
447
- expect(bfsNodesAfterBalanced[0].key).toBe(6);
447
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
448
448
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
449
449
 
450
450
  const removed11 = treeCounter.delete(11, true);
@@ -454,7 +454,7 @@ describe('TreeCounter operations test recursively1', () => {
454
454
 
455
455
  if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
456
456
 
457
- expect(treeCounter.isAVLBalanced()).toBe(false);
457
+ expect(treeCounter.isAVLBalanced()).toBe(true);
458
458
 
459
459
  expect(treeCounter.getHeight(15)).toBe(1);
460
460
 
@@ -463,10 +463,9 @@ describe('TreeCounter operations test recursively1', () => {
463
463
  expect(removed1[0]);
464
464
  expect(removed1[0].deleted);
465
465
  if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
466
+ expect(treeCounter.isAVLBalanced()).toBe(true);
466
467
 
467
- expect(treeCounter.isAVLBalanced()).toBe(false);
468
-
469
- expect(treeCounter.getHeight()).toBe(5);
468
+ expect(treeCounter.getHeight()).toBe(4);
470
469
 
471
470
  const removed4 = treeCounter.delete(4, true);
472
471
  expect(removed4 instanceof Array);
@@ -474,8 +473,8 @@ describe('TreeCounter operations test recursively1', () => {
474
473
  expect(removed4[0].deleted);
475
474
  if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
476
475
 
477
- expect(treeCounter.isAVLBalanced()).toBe(false);
478
- expect(treeCounter.getHeight()).toBe(5);
476
+ expect(treeCounter.isAVLBalanced()).toBe(true);
477
+ expect(treeCounter.getHeight()).toBe(4);
479
478
 
480
479
  const removed10 = treeCounter.delete(10, true);
481
480
  expect(removed10 instanceof Array);
@@ -492,7 +491,7 @@ describe('TreeCounter operations test recursively1', () => {
492
491
  expect(removed15[0].deleted);
493
492
  if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
494
493
 
495
- expect(treeCounter.isAVLBalanced()).toBe(false);
494
+ expect(treeCounter.isAVLBalanced()).toBe(true);
496
495
  expect(treeCounter.getHeight()).toBe(3);
497
496
 
498
497
  const removed5 = treeCounter.delete(5, true);
@@ -517,7 +516,8 @@ describe('TreeCounter operations test recursively1', () => {
517
516
  expect(removed3[0]);
518
517
  expect(removed3[0].deleted);
519
518
  if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
520
- expect(treeCounter.isAVLBalanced()).toBe(false);
519
+
520
+ expect(treeCounter.isAVLBalanced()).toBe(true);
521
521
  expect(treeCounter.getHeight()).toBe(3);
522
522
 
523
523
  const removed8 = treeCounter.delete(8, true);
@@ -709,7 +709,7 @@ describe('TreeCounter delete test', function () {
709
709
  });
710
710
 
711
711
  it('should the clone method', () => {
712
- function checkTreeStructure(treeCounter: TreeCounter<string, number>) {
712
+ function checkTreeStructure(treeCounter: IBinaryTree<string, number>) {
713
713
  expect(treeCounter.size).toBe(4);
714
714
  expect(treeCounter.root?.key).toBe('2');
715
715
  expect(treeCounter.root?.left?.key).toBe('1');
@@ -969,7 +969,8 @@ describe('TreeCounter iterative methods test not map mode', () => {
969
969
  expect(treeCounter.count).toBe(21);
970
970
  expect(treeCounter.getComputedCount()).toBe(21);
971
971
  const cloned = treeCounter.clone();
972
+ expect(cloned instanceof TreeCounter).toBe(true);
972
973
  expect(cloned.root?.left?.key).toBe(1);
973
- expect(cloned.get(cloned.root?.right)).toBe(undefined);
974
+ expect(cloned.get(cloned.root?.right)).toBe('c');
974
975
  });
975
976
  });
@@ -1,6 +1,6 @@
1
- import { BinaryTreeNode, BSTNode, TreeMultiMap, TreeMultiMapNode } from '../../../../src';
1
+ import { BinaryTreeNode, BSTNode, IBinaryTree, TreeMultiMap, TreeMultiMapNode } from '../../../../src';
2
2
  import { getRandomInt } from '../../../utils';
3
-
3
+ import { Range } from '../../../../src';
4
4
  import { isDebugTest } from '../../../config';
5
5
  import { costOfLiving } from './data/cost-of-living-by-country';
6
6
 
@@ -163,7 +163,7 @@ describe('TreeMultiMap 1', () => {
163
163
  });
164
164
 
165
165
  it('should the clone method', () => {
166
- function checkTreeStructure(tmm: TreeMultiMap<string, number>) {
166
+ function checkTreeStructure(tmm: IBinaryTree<string, number[]>) {
167
167
  expect(tmm.size).toBe(4);
168
168
  expect(tmm.root?.key).toBe('2');
169
169
  expect(tmm.root?.left?.key).toBe('1');
@@ -627,7 +627,7 @@ describe('TreeMultiMap 2', () => {
627
627
  });
628
628
 
629
629
  describe('TreeMultiMap iterative methods test', () => {
630
- let tmm: TreeMultiMap<number, string, object, string, string, object>;
630
+ let tmm: TreeMultiMap<number, string, object>;
631
631
  beforeEach(() => {
632
632
  tmm = new TreeMultiMap();
633
633
  tmm.add([1, ['a']]);
@@ -1003,3 +1003,111 @@ describe('classic use', () => {
1003
1003
  ]);
1004
1004
  });
1005
1005
  });
1006
+
1007
+ interface Product {
1008
+ id: string;
1009
+ name: string;
1010
+ price: number;
1011
+ }
1012
+
1013
+ // Build a TreeMultiMap in "multi" mode: price -> Product[]
1014
+ function buildIndex(sample: Product[]): TreeMultiMap<number, Product, Product> {
1015
+ return new TreeMultiMap<number, Product, Product>(sample, {
1016
+ toEntryFn: raw => [raw.price, [raw]],
1017
+ isMapMode: false // ensure multi-value per key
1018
+ });
1019
+ }
1020
+
1021
+ // Helper: normalize getLeftMost/getRightMost return (key or node.key)
1022
+ function leftKey(tmm: TreeMultiMap<number, Product, Product>): number | undefined {
1023
+ const v = tmm.getLeftMost();
1024
+ return v == null ? undefined : typeof v === 'object' ? v.key : v;
1025
+ }
1026
+ function rightKey(tmm: TreeMultiMap<number, Product, Product>): number | undefined {
1027
+ const v = tmm.getRightMost();
1028
+ return v == null ? undefined : typeof v === 'object' ? v.key : v;
1029
+ }
1030
+
1031
+ describe('TreeMultiMap — rangeSearch-driven semantics', () => {
1032
+ const sample: Product[] = [
1033
+ { id: 'p1', name: 'Basic Tee', price: 35.5 },
1034
+ { id: 'p2', name: 'Sport Socks', price: 12.9 },
1035
+ { id: 'p3', name: 'Denim Jeans', price: 79.9 },
1036
+ { id: 'p4', name: 'Hoodie', price: 79.9 },
1037
+ { id: 'p5', name: 'Sneakers', price: 99.0 },
1038
+ { id: 'p6', name: 'Backpack', price: 120.0 },
1039
+ { id: 'p7', name: 'Watch', price: 199.0 },
1040
+ { id: 'p8', name: 'Hat', price: 35.5 }
1041
+ ];
1042
+
1043
+ it('stores multiple values under the same key and preserves insertion order in the bucket', () => {
1044
+ const tmm = buildIndex(sample);
1045
+ // Use rangeSearch on the single key [35.5, 35.5]
1046
+ const groups = tmm.rangeSearch(new Range(35.5, 35.5, true, true), node => node.value).flat();
1047
+ expect(groups.map(p => p!.id)).toEqual(['p1', 'p8']); // insertion order kept
1048
+ });
1049
+
1050
+ it('iterates keys in ascending order (via keys())', () => {
1051
+ const tmm = buildIndex(sample);
1052
+ expect([...tmm.keys()]).toEqual([12.9, 35.5, 79.9, 99, 120, 199]);
1053
+ });
1054
+
1055
+ it('rangeSearch respects inclusive/exclusive bounds — flat result', () => {
1056
+ const tmm = buildIndex(sample);
1057
+
1058
+ // [35.5, 100): include 35.5, exclude 100
1059
+ const res = tmm.rangeSearch(new Range(35.5, 100, true, false), node => node.value).flat();
1060
+
1061
+ expect(res.map(p => `${p!.name}($${p!.price})`)).toEqual([
1062
+ 'Basic Tee($35.5)',
1063
+ 'Hat($35.5)',
1064
+ 'Denim Jeans($79.9)',
1065
+ 'Hoodie($79.9)',
1066
+ 'Sneakers($99)'
1067
+ ]);
1068
+ expect(res.map(p => p!.id)).toEqual(['p1', 'p8', 'p3', 'p4', 'p5']);
1069
+ });
1070
+
1071
+ it('rangeSearch returns grouped buckets — both ends exclusive', () => {
1072
+ const tmm = buildIndex(sample);
1073
+
1074
+ // (80, 200) → keys 99, 120, 199
1075
+ const groups = tmm.rangeSearch(new Range(80, 200, false, false), node => ({ key: node.key, bucket: node.value }));
1076
+
1077
+ expect(groups.map(g => g.key)).toEqual([99, 120, 199]);
1078
+ expect(groups.map(g => g.bucket!.map(i => i.id))).toEqual([['p5'], ['p6'], ['p7']]);
1079
+ });
1080
+
1081
+ it('rangeSearch across full domain by using current min/max keys (no Infinity)', () => {
1082
+ const tmm = buildIndex(sample);
1083
+ const lo = tmm.getLeftMost(); // expected 12.9
1084
+ const hi = tmm.getRightMost(); // expected 199
1085
+
1086
+ const groups = tmm.rangeSearch(new Range(lo, hi, true, true), node => ({
1087
+ key: node.key,
1088
+ count: node.value!.length
1089
+ }));
1090
+
1091
+ // 12.9:1 | 35.5:2 | 79.9:2 | 99:1 | 120:1 | 199:1
1092
+ expect(groups.map(g => `${g.key}:${g.count}`).join(' | ')).toBe('12.9:1 | 35.5:2 | 79.9:2 | 99:1 | 120:1 | 199:1');
1093
+ });
1094
+
1095
+ it('empty TreeMultiMap → rangeSearch returns empty results', () => {
1096
+ const tmm = buildIndex([]);
1097
+ // Any finite range should yield empty
1098
+ const flat = tmm.rangeSearch(new Range(0, 100, true, true), n => n.value).flat();
1099
+ expect(flat).toEqual([]);
1100
+
1101
+ const groups = tmm.rangeSearch(new Range(0, 100, true, true), (node: any) => ({
1102
+ key: node.key,
1103
+ bucket: node.value as Product[]
1104
+ }));
1105
+ expect(groups).toEqual([]);
1106
+ });
1107
+
1108
+ it('left-most/right-most key helpers (if API returns node, unwrap .key)', () => {
1109
+ const tmm = buildIndex(sample);
1110
+ expect(leftKey(tmm)).toBe(12.9);
1111
+ expect(rightKey(tmm)).toBe(199);
1112
+ });
1113
+ });
@@ -83,10 +83,6 @@ class MyGraph<
83
83
 
84
84
  clear(): void {}
85
85
 
86
- clone(): any {
87
- return {};
88
- }
89
-
90
86
  protected _addEdge(edge: EO): boolean {
91
87
  return edge ? true : true;
92
88
  }
@@ -685,7 +685,7 @@ describe('DirectedGraph iterative Methods', () => {
685
685
  });
686
686
 
687
687
  it('filter should return vertexMap that satisfy the condition', () => {
688
- const filtered = graph.filter(vertex => vertex === 'A' || vertex === 'B');
688
+ const filtered = graph.filterEntries(key => key === 'A' || key === 'B');
689
689
  expect(filtered).toEqual([
690
690
  ['A', undefined],
691
691
  ['B', undefined]
@@ -155,18 +155,14 @@ describe('Heap Operation Test', () => {
155
155
  }
156
156
  );
157
157
 
158
- const mappedMinHeap = minHeap.map(
159
- item => item.key,
160
- (a, b) => a - b
161
- );
158
+ const mappedMinHeap = minHeap.map(item => item.key, { comparator: (a, b) => a - b });
162
159
  expect(mappedMinHeap.peek()).toBe(0);
163
160
  expect(mappedMinHeap.sort()).toEqual([0, 1, 2, 3, 4, 5, 6]);
164
161
 
165
- const mappedToElementFnMinHeap = minHeap.map<string, { id: string }>(
166
- item => item.key.toString(),
167
- (a, b) => Number(a) - Number(b),
168
- rawElement => rawElement.id
169
- );
162
+ const mappedToElementFnMinHeap = minHeap.map<string, { id: string }>(item => item.key.toString(), {
163
+ comparator: (a, b) => Number(a) - Number(b),
164
+ toElementFn: rawElement => rawElement.id
165
+ });
170
166
  expect(mappedToElementFnMinHeap.peek()).toBe('0');
171
167
  expect(mappedToElementFnMinHeap.sort()).toEqual(['0', '1', '2', '3', '4', '5', '6']);
172
168
 
@@ -234,17 +230,17 @@ describe('Heap Operation Test', () => {
234
230
  expect(hp.leaf).toBe(1);
235
231
  });
236
232
 
237
- it('should error', function () {
238
- expect(() => {
239
- new Heap([{ key: 1 }, { key: 2 }, { key: 3 }]);
240
- }).toThrow(
241
- "When comparing object types, a custom comparator must be defined in the constructor's options parameter."
242
- );
243
- });
233
+ // it('should error', function () {
234
+ // expect(() => {
235
+ // new Heap([{ key: 1 }, { key: 2 }, { key: 3 }]);
236
+ // }).toThrow(
237
+ // "When comparing object types, a custom comparator must be defined in the constructor's options parameter."
238
+ // );
239
+ // });
244
240
  });
245
241
 
246
242
  describe('Heap HOF', () => {
247
- let hp: Heap;
243
+ let hp: Heap<{ key: number }, { key: number }>;
248
244
 
249
245
  beforeEach(() => {
250
246
  hp = new Heap([{ key: 1 }, { key: 2 }, { key: 3 }], { comparator: (a, b) => a.key - b.key });
@@ -256,10 +252,7 @@ describe('Heap HOF', () => {
256
252
  });
257
253
 
258
254
  it('should map', () => {
259
- const mapped = hp.map(
260
- ({ key }) => [key, key],
261
- (a, b) => a[0] - b[0]
262
- );
255
+ const mapped = hp.map(({ key }) => [key, key], { comparator: (a, b) => a[0] - b[0] });
263
256
  expect([...mapped]).toEqual([
264
257
  [1, 1],
265
258
  [2, 2],
@@ -71,10 +71,7 @@ describe('MaxHeap', () => {
71
71
  }
72
72
  );
73
73
 
74
- const mappedMaxHeap = maxHeap.map(
75
- item => item.key,
76
- (a, b) => b - a
77
- );
74
+ const mappedMaxHeap = maxHeap.map(item => item.key, { comparator: (a, b) => b - a });
78
75
  expect(mappedMaxHeap.peek()).toBe(6);
79
76
  expect(mappedMaxHeap.sort()).toEqual([6, 5, 4, 3, 2, 1, 0]);
80
77
 
@@ -83,11 +80,10 @@ describe('MaxHeap', () => {
83
80
  {
84
81
  id: string;
85
82
  }
86
- >(
87
- item => item.key.toString(),
88
- (a, b) => Number(b) - Number(a),
89
- rawElement => rawElement.id
90
- );
83
+ >(item => item.key.toString(), {
84
+ comparator: (a, b) => Number(b) - Number(a),
85
+ toElementFn: rawElement => rawElement.id
86
+ });
91
87
  expect(mappedToElementFnMaxHeap.peek()).toBe('6');
92
88
  expect(mappedToElementFnMaxHeap.sort()).toEqual(['6', '5', '4', '3', '2', '1', '0']);
93
89
 
@@ -106,10 +106,7 @@ describe('Heap iterative methods', () => {
106
106
  });
107
107
 
108
108
  it('map method correctly maps elements', () => {
109
- const result = heap.map(
110
- x => x / 10,
111
- (a: number, b: number) => a - b
112
- );
109
+ const result = heap.map(x => x / 10, { comparator: (a: number, b: number) => a - b });
113
110
  expect([...result]).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
114
111
  });
115
112
 
@@ -783,6 +783,16 @@ describe('classic use', () => {
783
783
  this.map = new Map<K, DoublyLinkedListNode<CacheEntry<K, V>>>();
784
784
  }
785
785
 
786
+ // Get the current cache length
787
+ get length(): number {
788
+ return this.list.length;
789
+ }
790
+
791
+ // Check if it is empty
792
+ get isEmpty(): boolean {
793
+ return this.list.isEmpty();
794
+ }
795
+
786
796
  // Get cached value
787
797
  get(key: K): V | undefined {
788
798
  const node = this.map.get(key);
@@ -828,12 +838,6 @@ describe('classic use', () => {
828
838
  }
829
839
  }
830
840
 
831
- // Move the node to the head of the linked list
832
- private moveToFront(node: DoublyLinkedListNode<CacheEntry<K, V>>): void {
833
- this.list.delete(node);
834
- this.list.unshift(node.value);
835
- }
836
-
837
841
  // Delete specific key
838
842
  delete(key: K): boolean {
839
843
  const node = this.map.get(key);
@@ -853,14 +857,10 @@ describe('classic use', () => {
853
857
  this.map.clear();
854
858
  }
855
859
 
856
- // Get the current cache length
857
- get length(): number {
858
- return this.list.length;
859
- }
860
-
861
- // Check if it is empty
862
- get isEmpty(): boolean {
863
- return this.list.isEmpty();
860
+ // Move the node to the head of the linked list
861
+ private moveToFront(node: DoublyLinkedListNode<CacheEntry<K, V>>): void {
862
+ this.list.delete(node);
863
+ this.list.unshift(node.value);
864
864
  }
865
865
  }
866
866
 
@@ -618,11 +618,6 @@ describe('SinglyLinkedList', () => {
618
618
  list.push(3);
619
619
  expect(list.map(value => value * 2).toArray()).toEqual([2, 4, 6]);
620
620
  });
621
-
622
- it('should reduce the list', () => {
623
- const list1 = SinglyLinkedList.fromArray([1, 2, 3]);
624
- expect(list1.reduce((acc, value) => acc + value, 0)).toEqual(6);
625
- });
626
621
  });
627
622
 
628
623
  describe('iterable methods', () => {
@@ -651,9 +646,7 @@ describe('iterable methods', () => {
651
646
  });
652
647
 
653
648
  describe('classic uses', () => {
654
-
655
649
  it('@example implementation of a basic text editor', () => {
656
-
657
650
  class TextEditor {
658
651
  private content: SinglyLinkedList<string>;
659
652
  private cursorIndex: number;
@@ -139,21 +139,18 @@ describe('MaxPriorityQueue Operation Test', () => {
139
139
  expect(filtered instanceof MaxPriorityQueue).toBe(true);
140
140
  expect([...filtered]).toEqual([7, 1, 5]);
141
141
 
142
- const mapped = filtered.map(
143
- item => ({ key: item }),
144
- (a, b) => b.key - a.key
145
- );
142
+ const mapped = filtered.map(item => ({ key: item }), { comparator: (a, b) => b.key - a.key });
146
143
  expect(mapped instanceof MaxPriorityQueue).toBe(true);
147
144
  expect([...mapped]).toEqual([{ key: 7 }, { key: 1 }, { key: 5 }]);
148
145
  });
149
146
 
150
- it('should MaxPriorityQueue throw an error while initialed with object data', function () {
151
- expect(() => {
152
- new MaxPriorityQueue<{ key: number }>([{ key: 7 }, { key: 1 }, { key: 7 }]);
153
- }).toThrow(
154
- "When comparing object types, a custom comparator must be defined in the constructor's options parameter."
155
- );
156
- });
147
+ // it('should MaxPriorityQueue throw an error while initialed with object data', function () {
148
+ // expect(() => {
149
+ // new MaxPriorityQueue<{ key: number }>([{ key: 7 }, { key: 1 }, { key: 7 }]);
150
+ // }).toThrow(
151
+ // "When comparing object types, a custom comparator must be defined in the constructor's options parameter."
152
+ // );
153
+ // });
157
154
 
158
155
  it('should MaxPriorityQueue comparator return 0 when equal values are added', function () {
159
156
  const duplicated = new MaxPriorityQueue<number>([7, 1, 7, 7]);
@@ -70,10 +70,7 @@ describe('MinPriorityQueue Operation Test', () => {
70
70
  expect(filtered instanceof MinPriorityQueue).toBe(true);
71
71
  expect([...filtered]).toEqual([1, 5, 7]);
72
72
 
73
- const mapped = filtered.map(
74
- item => ({ key: item }),
75
- (a, b) => a.key - b.key
76
- );
73
+ const mapped = filtered.map(item => ({ key: item }), { comparator: (a, b) => a.key - b.key });
77
74
  expect(mapped instanceof MinPriorityQueue).toBe(true);
78
75
  expect([...mapped]).toEqual([{ key: 1 }, { key: 5 }, { key: 7 }]);
79
76
  expect(mapped.toVisual()).toEqual([{ key: 1 }, { key: 5 }, { key: 7 }]);
@@ -62,10 +62,7 @@ describe('PriorityQueue Operation Test', () => {
62
62
  expect(filtered instanceof PriorityQueue).toBe(true);
63
63
  expect([...filtered]).toEqual([1, 3, 5, 7]);
64
64
 
65
- const mapped = filtered.map(
66
- item => ({ key: item }),
67
- (a, b) => a.key - b.key
68
- );
65
+ const mapped = filtered.map(item => ({ key: item }), { comparator: (a, b) => a.key - b.key });
69
66
  expect(mapped instanceof PriorityQueue).toBe(true);
70
67
  expect([...mapped]).toEqual([{ key: 1 }, { key: 3 }, { key: 5 }, { key: 7 }]);
71
68
  });
@@ -153,10 +153,9 @@ describe('Queue', () => {
153
153
  expect(mappedQueue.at(0)).toBe(1);
154
154
  expect([...mappedQueue]).toEqual([1, 6, 5, 3, 2, 4, 0]);
155
155
 
156
- const mappedToElementFnQueue = queue.map<string, { id: string }>(
157
- item => item.key.toString(),
158
- rawElement => rawElement.id
159
- );
156
+ const mappedToElementFnQueue = queue.map<string, { id: string }>(item => item.key.toString(), {
157
+ toElementFn: rawElement => rawElement.id
158
+ });
160
159
  expect(mappedToElementFnQueue.at(0)).toBe('1');
161
160
  expect([...mappedToElementFnQueue]).toEqual(['1', '6', '5', '3', '2', '4', '0']);
162
161
 
@@ -603,7 +602,7 @@ describe('classic uses', () => {
603
602
  let maxSum = 0;
604
603
  let currentSum = 0;
605
604
 
606
- nums.forEach((num) => {
605
+ nums.forEach(num => {
607
606
  queue.push(num);
608
607
  currentSum += num;
609
608
 
@@ -172,4 +172,3 @@ describe('isComparable', () => {
172
172
  });
173
173
  });
174
174
  });
175
-