data-structure-typed 1.40.0-rc → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1066) hide show
  1. package/.eslintrc.js +7 -5
  2. package/.github/workflows/ci.yml +2 -20
  3. package/.travis.yml +3 -4
  4. package/CHANGELOG.md +23 -1
  5. package/CONTRIBUTING.md +13 -0
  6. package/README.md +20 -11
  7. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +106 -0
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.js +348 -0
  9. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -0
  10. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.d.ts +149 -0
  11. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +270 -0
  12. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +363 -0
  14. package/dist/cjs/data-structures/binary-tree/binary-tree.js +1136 -0
  15. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -0
  16. package/dist/cjs/data-structures/binary-tree/bst.d.ts +167 -0
  17. package/dist/cjs/data-structures/binary-tree/bst.js +513 -0
  18. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -0
  19. package/dist/cjs/data-structures/binary-tree/index.d.ts +7 -0
  20. package/dist/cjs/data-structures/binary-tree/index.js +24 -0
  21. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -0
  22. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +97 -0
  23. package/dist/cjs/data-structures/binary-tree/rb-tree.js +389 -0
  24. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -0
  25. package/dist/cjs/data-structures/binary-tree/segment-tree.d.ts +67 -0
  26. package/dist/cjs/data-structures/binary-tree/segment-tree.js +181 -0
  27. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +1 -0
  28. package/dist/cjs/data-structures/binary-tree/tree-multiset.d.ts +126 -0
  29. package/dist/cjs/data-structures/binary-tree/tree-multiset.js +356 -0
  30. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -0
  31. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +313 -0
  32. package/dist/cjs/data-structures/graph/abstract-graph.js +885 -0
  33. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -0
  34. package/dist/cjs/data-structures/graph/directed-graph.d.ts +194 -0
  35. package/dist/cjs/data-structures/graph/directed-graph.js +405 -0
  36. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -0
  37. package/dist/cjs/data-structures/graph/index.js.map +1 -0
  38. package/dist/cjs/data-structures/graph/map-graph.d.ts +73 -0
  39. package/dist/cjs/data-structures/graph/map-graph.js +94 -0
  40. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -0
  41. package/dist/cjs/data-structures/graph/undirected-graph.d.ts +120 -0
  42. package/dist/cjs/data-structures/graph/undirected-graph.js +240 -0
  43. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -0
  44. package/dist/cjs/data-structures/hash/coordinate-map.d.ts +44 -0
  45. package/dist/cjs/data-structures/hash/coordinate-map.js +63 -0
  46. package/dist/cjs/data-structures/hash/coordinate-map.js.map +1 -0
  47. package/dist/cjs/data-structures/hash/coordinate-set.d.ts +36 -0
  48. package/dist/cjs/data-structures/hash/coordinate-set.js +53 -0
  49. package/dist/cjs/data-structures/hash/coordinate-set.js.map +1 -0
  50. package/dist/cjs/data-structures/hash/hash-map.d.ts +50 -0
  51. package/dist/cjs/data-structures/hash/hash-map.js +154 -0
  52. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -0
  53. package/dist/cjs/data-structures/hash/hash-table.d.ts +103 -0
  54. package/dist/cjs/data-structures/hash/hash-table.js +237 -0
  55. package/dist/cjs/data-structures/hash/hash-table.js.map +1 -0
  56. package/dist/cjs/data-structures/hash/index.d.ts +6 -0
  57. package/dist/cjs/data-structures/hash/index.js +23 -0
  58. package/dist/cjs/data-structures/hash/index.js.map +1 -0
  59. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -0
  60. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -0
  61. package/dist/cjs/data-structures/heap/heap.d.ts +235 -0
  62. package/dist/cjs/data-structures/heap/heap.js +516 -0
  63. package/dist/cjs/data-structures/heap/heap.js.map +1 -0
  64. package/dist/cjs/data-structures/heap/index.js.map +1 -0
  65. package/dist/cjs/data-structures/heap/max-heap.d.ts +15 -0
  66. package/dist/cjs/data-structures/heap/max-heap.js +27 -0
  67. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -0
  68. package/dist/cjs/data-structures/heap/min-heap.d.ts +15 -0
  69. package/dist/cjs/data-structures/heap/min-heap.js +27 -0
  70. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -0
  71. package/dist/cjs/data-structures/index.js.map +1 -0
  72. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +253 -0
  73. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +570 -0
  74. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  75. package/dist/cjs/data-structures/linked-list/index.js.map +1 -0
  76. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +232 -0
  77. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +534 -0
  78. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -0
  79. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +80 -0
  80. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +188 -0
  81. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -0
  82. package/dist/cjs/data-structures/matrix/index.js.map +1 -0
  83. package/dist/cjs/data-structures/matrix/matrix.d.ts +21 -0
  84. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -0
  85. package/dist/cjs/data-structures/matrix/matrix2d.d.ts +107 -0
  86. package/dist/cjs/data-structures/matrix/matrix2d.js +200 -0
  87. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -0
  88. package/dist/cjs/data-structures/matrix/navigator.d.ts +52 -0
  89. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -0
  90. package/dist/cjs/data-structures/matrix/vector2d.d.ts +200 -0
  91. package/dist/cjs/data-structures/matrix/vector2d.js +291 -0
  92. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -0
  93. package/dist/cjs/data-structures/priority-queue/index.js.map +1 -0
  94. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +15 -0
  95. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +27 -0
  96. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  97. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +15 -0
  98. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +27 -0
  99. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  100. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +15 -0
  101. package/dist/cjs/data-structures/priority-queue/priority-queue.js +18 -0
  102. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -0
  103. package/dist/cjs/data-structures/queue/deque.d.ts +161 -0
  104. package/dist/cjs/data-structures/queue/deque.js +265 -0
  105. package/dist/cjs/data-structures/queue/deque.js.map +1 -0
  106. package/dist/cjs/data-structures/queue/index.js.map +1 -0
  107. package/dist/cjs/data-structures/queue/queue.d.ts +122 -0
  108. package/dist/cjs/data-structures/queue/queue.js +188 -0
  109. package/dist/cjs/data-structures/queue/queue.js.map +1 -0
  110. package/dist/cjs/data-structures/stack/index.js.map +1 -0
  111. package/dist/cjs/data-structures/stack/stack.d.ts +64 -0
  112. package/dist/cjs/data-structures/stack/stack.js +95 -0
  113. package/dist/cjs/data-structures/stack/stack.js.map +1 -0
  114. package/dist/cjs/data-structures/tree/index.js.map +1 -0
  115. package/dist/cjs/data-structures/tree/tree.d.ts +8 -0
  116. package/dist/cjs/data-structures/tree/tree.js +41 -0
  117. package/dist/cjs/data-structures/tree/tree.js.map +1 -0
  118. package/dist/cjs/data-structures/trie/index.js.map +1 -0
  119. package/dist/cjs/data-structures/trie/trie.d.ts +79 -0
  120. package/dist/cjs/data-structures/trie/trie.js +252 -0
  121. package/dist/cjs/data-structures/trie/trie.js.map +1 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/interfaces/binary-tree.d.ts +7 -0
  124. package/dist/cjs/interfaces/binary-tree.js.map +1 -0
  125. package/dist/cjs/interfaces/doubly-linked-list.js.map +1 -0
  126. package/dist/cjs/interfaces/graph.d.ts +5 -0
  127. package/dist/cjs/interfaces/graph.js +3 -0
  128. package/dist/cjs/interfaces/graph.js.map +1 -0
  129. package/dist/cjs/interfaces/heap.js.map +1 -0
  130. package/dist/cjs/interfaces/index.d.ts +8 -0
  131. package/dist/cjs/interfaces/index.js +25 -0
  132. package/dist/cjs/interfaces/index.js.map +1 -0
  133. package/dist/cjs/interfaces/navigator.js.map +1 -0
  134. package/dist/cjs/interfaces/priority-queue.js.map +1 -0
  135. package/dist/cjs/interfaces/segment-tree.js.map +1 -0
  136. package/dist/cjs/interfaces/singly-linked-list.js.map +1 -0
  137. package/dist/cjs/types/data-structures/binary-tree/avl-tree.d.ts +4 -0
  138. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +1 -0
  139. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js +3 -0
  140. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  141. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +29 -0
  142. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js +25 -0
  143. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +1 -0
  144. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +7 -0
  145. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +1 -0
  146. package/dist/cjs/types/data-structures/binary-tree/index.d.ts +6 -0
  147. package/dist/cjs/types/data-structures/binary-tree/index.js +23 -0
  148. package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -0
  149. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -0
  150. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js +14 -0
  151. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +1 -0
  152. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +1 -0
  153. package/dist/cjs/types/data-structures/binary-tree/tree-multiset.d.ts +4 -0
  154. package/dist/cjs/types/data-structures/binary-tree/tree-multiset.js.map +1 -0
  155. package/dist/cjs/types/data-structures/graph/abstract-graph.d.ts +10 -0
  156. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +1 -0
  157. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +1 -0
  158. package/dist/cjs/types/data-structures/graph/index.d.ts +3 -0
  159. package/dist/cjs/types/data-structures/graph/index.js +20 -0
  160. package/dist/cjs/types/data-structures/graph/index.js.map +1 -0
  161. package/dist/cjs/types/data-structures/graph/map-graph.js.map +1 -0
  162. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +1 -0
  163. package/dist/cjs/types/data-structures/hash/coordinate-map.js +3 -0
  164. package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +1 -0
  165. package/dist/cjs/types/data-structures/hash/coordinate-set.js +3 -0
  166. package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +1 -0
  167. package/dist/cjs/types/data-structures/hash/hash-map.js +3 -0
  168. package/dist/cjs/types/data-structures/hash/hash-map.js.map +1 -0
  169. package/dist/cjs/types/data-structures/hash/hash-table.js +3 -0
  170. package/dist/cjs/types/data-structures/hash/hash-table.js.map +1 -0
  171. package/dist/cjs/types/data-structures/hash/index.js +3 -0
  172. package/dist/cjs/types/data-structures/hash/index.js.map +1 -0
  173. package/dist/cjs/types/data-structures/hash/tree-map.js +3 -0
  174. package/dist/cjs/types/data-structures/hash/tree-map.js.map +1 -0
  175. package/dist/cjs/types/data-structures/hash/tree-set.js +3 -0
  176. package/dist/cjs/types/data-structures/hash/tree-set.js.map +1 -0
  177. package/dist/cjs/types/data-structures/heap/heap.js.map +1 -0
  178. package/dist/cjs/types/data-structures/heap/index.d.ts +1 -0
  179. package/dist/cjs/types/data-structures/heap/index.js +18 -0
  180. package/dist/cjs/types/data-structures/heap/index.js.map +1 -0
  181. package/dist/cjs/types/data-structures/heap/max-heap.js +3 -0
  182. package/dist/cjs/types/data-structures/heap/max-heap.js.map +1 -0
  183. package/dist/cjs/types/data-structures/heap/min-heap.js +3 -0
  184. package/dist/cjs/types/data-structures/heap/min-heap.js.map +1 -0
  185. package/dist/cjs/types/data-structures/index.d.ts +11 -0
  186. package/dist/cjs/types/data-structures/index.js +28 -0
  187. package/dist/cjs/types/data-structures/index.js.map +1 -0
  188. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  189. package/dist/cjs/types/data-structures/linked-list/index.d.ts +2 -0
  190. package/dist/cjs/types/data-structures/linked-list/index.js +19 -0
  191. package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -0
  192. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +1 -0
  193. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js +3 -0
  194. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +1 -0
  195. package/dist/cjs/types/data-structures/matrix/index.d.ts +1 -0
  196. package/dist/cjs/types/data-structures/matrix/index.js +18 -0
  197. package/dist/cjs/types/data-structures/matrix/index.js.map +1 -0
  198. package/dist/cjs/types/data-structures/matrix/matrix.js +3 -0
  199. package/dist/cjs/types/data-structures/matrix/matrix.js.map +1 -0
  200. package/dist/cjs/types/data-structures/matrix/matrix2d.js +3 -0
  201. package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +1 -0
  202. package/dist/cjs/types/data-structures/matrix/navigator.js.map +1 -0
  203. package/dist/cjs/types/data-structures/matrix/vector2d.js +3 -0
  204. package/dist/cjs/types/data-structures/matrix/vector2d.js.map +1 -0
  205. package/dist/cjs/types/data-structures/priority-queue/index.js +20 -0
  206. package/dist/cjs/types/data-structures/priority-queue/index.js.map +1 -0
  207. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js +3 -0
  208. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  209. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js +3 -0
  210. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  211. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +1 -0
  212. package/dist/cjs/types/data-structures/queue/deque.js +3 -0
  213. package/dist/cjs/types/data-structures/queue/deque.js.map +1 -0
  214. package/dist/cjs/types/data-structures/queue/index.js +19 -0
  215. package/dist/cjs/types/data-structures/queue/index.js.map +1 -0
  216. package/dist/cjs/types/data-structures/queue/queue.js +3 -0
  217. package/dist/cjs/types/data-structures/queue/queue.js.map +1 -0
  218. package/dist/cjs/types/data-structures/stack/index.js +18 -0
  219. package/dist/cjs/types/data-structures/stack/index.js.map +1 -0
  220. package/dist/cjs/types/data-structures/stack/stack.js +3 -0
  221. package/dist/cjs/types/data-structures/stack/stack.js.map +1 -0
  222. package/dist/cjs/types/data-structures/tree/index.js +18 -0
  223. package/dist/cjs/types/data-structures/tree/index.js.map +1 -0
  224. package/dist/cjs/types/data-structures/tree/tree.js +3 -0
  225. package/dist/cjs/types/data-structures/tree/tree.js.map +1 -0
  226. package/dist/cjs/types/data-structures/trie/index.js +18 -0
  227. package/dist/cjs/types/data-structures/trie/index.js.map +1 -0
  228. package/dist/cjs/types/data-structures/trie/trie.js +3 -0
  229. package/dist/cjs/types/data-structures/trie/trie.js.map +1 -0
  230. package/dist/cjs/types/helpers.d.ts +8 -0
  231. package/dist/cjs/types/helpers.js +10 -0
  232. package/dist/cjs/types/helpers.js.map +1 -0
  233. package/dist/cjs/types/index.js.map +1 -0
  234. package/dist/cjs/types/utils/index.js.map +1 -0
  235. package/dist/cjs/types/utils/utils.js.map +1 -0
  236. package/dist/cjs/types/utils/validate-type.js.map +1 -0
  237. package/dist/cjs/utils/index.js.map +1 -0
  238. package/dist/cjs/utils/utils.d.ts +20 -0
  239. package/dist/cjs/utils/utils.js +74 -0
  240. package/dist/cjs/utils/utils.js.map +1 -0
  241. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +106 -0
  242. package/dist/mjs/data-structures/binary-tree/avl-tree.js +348 -0
  243. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.d.ts +149 -0
  244. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js +274 -0
  245. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +363 -0
  246. package/dist/mjs/data-structures/binary-tree/binary-tree.js +1147 -0
  247. package/dist/mjs/data-structures/binary-tree/bst.d.ts +167 -0
  248. package/dist/mjs/data-structures/binary-tree/bst.js +509 -0
  249. package/dist/mjs/data-structures/binary-tree/index.d.ts +7 -0
  250. package/dist/mjs/data-structures/binary-tree/index.js +23 -0
  251. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +97 -0
  252. package/dist/mjs/data-structures/binary-tree/rb-tree.js +393 -0
  253. package/dist/mjs/data-structures/binary-tree/segment-tree.d.ts +67 -0
  254. package/dist/mjs/data-structures/binary-tree/segment-tree.js +182 -0
  255. package/dist/mjs/data-structures/binary-tree/tree-multiset.d.ts +126 -0
  256. package/dist/mjs/data-structures/binary-tree/tree-multiset.js +356 -0
  257. package/dist/mjs/data-structures/graph/abstract-graph.d.ts +313 -0
  258. package/dist/mjs/data-structures/graph/abstract-graph.js +883 -0
  259. package/dist/mjs/data-structures/graph/directed-graph.d.ts +194 -0
  260. package/dist/mjs/data-structures/graph/directed-graph.js +406 -0
  261. package/dist/mjs/data-structures/graph/index.js +20 -0
  262. package/dist/mjs/data-structures/graph/map-graph.d.ts +73 -0
  263. package/dist/mjs/data-structures/graph/map-graph.js +96 -0
  264. package/dist/mjs/data-structures/graph/undirected-graph.d.ts +120 -0
  265. package/dist/mjs/data-structures/graph/undirected-graph.js +239 -0
  266. package/dist/mjs/data-structures/hash/coordinate-map.d.ts +44 -0
  267. package/dist/mjs/data-structures/hash/coordinate-map.js +62 -0
  268. package/dist/mjs/data-structures/hash/coordinate-set.d.ts +36 -0
  269. package/dist/mjs/data-structures/hash/coordinate-set.js +52 -0
  270. package/dist/mjs/data-structures/hash/hash-map.d.ts +50 -0
  271. package/dist/mjs/data-structures/hash/hash-map.js +159 -0
  272. package/dist/mjs/data-structures/hash/hash-table.d.ts +103 -0
  273. package/dist/mjs/data-structures/hash/hash-table.js +243 -0
  274. package/dist/mjs/data-structures/hash/index.d.ts +6 -0
  275. package/dist/mjs/data-structures/hash/index.js +22 -0
  276. package/dist/mjs/data-structures/hash/tree-map.js +6 -0
  277. package/dist/mjs/data-structures/hash/tree-set.js +6 -0
  278. package/dist/mjs/data-structures/heap/heap.d.ts +235 -0
  279. package/dist/mjs/data-structures/heap/heap.js +525 -0
  280. package/dist/mjs/data-structures/heap/index.js +19 -0
  281. package/dist/mjs/data-structures/heap/max-heap.d.ts +15 -0
  282. package/dist/mjs/data-structures/heap/max-heap.js +26 -0
  283. package/dist/mjs/data-structures/heap/min-heap.d.ts +15 -0
  284. package/dist/mjs/data-structures/heap/min-heap.js +26 -0
  285. package/dist/mjs/data-structures/index.js +27 -0
  286. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +253 -0
  287. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +573 -0
  288. package/dist/mjs/data-structures/linked-list/index.js +19 -0
  289. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +232 -0
  290. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +538 -0
  291. package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +80 -0
  292. package/dist/mjs/data-structures/linked-list/skip-linked-list.js +194 -0
  293. package/dist/mjs/data-structures/matrix/index.js +20 -0
  294. package/dist/mjs/data-structures/matrix/matrix.d.ts +21 -0
  295. package/dist/mjs/data-structures/matrix/matrix.js +29 -0
  296. package/dist/mjs/data-structures/matrix/matrix2d.d.ts +107 -0
  297. package/dist/mjs/data-structures/matrix/matrix2d.js +200 -0
  298. package/dist/mjs/data-structures/matrix/navigator.d.ts +52 -0
  299. package/dist/mjs/data-structures/matrix/navigator.js +113 -0
  300. package/dist/mjs/data-structures/matrix/vector2d.d.ts +200 -0
  301. package/dist/mjs/data-structures/matrix/vector2d.js +293 -0
  302. package/dist/mjs/data-structures/priority-queue/index.js +19 -0
  303. package/dist/mjs/data-structures/priority-queue/max-priority-queue.d.ts +15 -0
  304. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +26 -0
  305. package/dist/mjs/data-structures/priority-queue/min-priority-queue.d.ts +15 -0
  306. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +26 -0
  307. package/dist/mjs/data-structures/priority-queue/priority-queue.d.ts +15 -0
  308. package/dist/mjs/data-structures/priority-queue/priority-queue.js +17 -0
  309. package/dist/mjs/data-structures/queue/deque.d.ts +161 -0
  310. package/dist/mjs/data-structures/queue/deque.js +257 -0
  311. package/dist/mjs/data-structures/queue/index.js +18 -0
  312. package/dist/mjs/data-structures/queue/queue.d.ts +122 -0
  313. package/dist/mjs/data-structures/queue/queue.js +188 -0
  314. package/dist/mjs/data-structures/stack/index.js +17 -0
  315. package/dist/mjs/data-structures/stack/stack.d.ts +64 -0
  316. package/dist/mjs/data-structures/stack/stack.js +95 -0
  317. package/dist/mjs/data-structures/tree/index.js +17 -0
  318. package/dist/mjs/data-structures/tree/tree.d.ts +8 -0
  319. package/dist/mjs/data-structures/tree/tree.js +43 -0
  320. package/dist/mjs/data-structures/trie/index.js +17 -0
  321. package/dist/mjs/data-structures/trie/trie.d.ts +79 -0
  322. package/dist/mjs/data-structures/trie/trie.js +256 -0
  323. package/dist/mjs/index.js +20 -0
  324. package/dist/mjs/interfaces/binary-tree.d.ts +7 -0
  325. package/dist/mjs/interfaces/binary-tree.js +2 -0
  326. package/dist/mjs/interfaces/doubly-linked-list.js +2 -0
  327. package/dist/mjs/interfaces/graph.d.ts +5 -0
  328. package/dist/mjs/interfaces/graph.js +2 -0
  329. package/dist/mjs/interfaces/heap.js +2 -0
  330. package/dist/mjs/interfaces/index.d.ts +8 -0
  331. package/dist/mjs/interfaces/index.js +24 -0
  332. package/dist/mjs/interfaces/navigator.js +2 -0
  333. package/dist/mjs/interfaces/priority-queue.js +2 -0
  334. package/dist/mjs/interfaces/segment-tree.js +2 -0
  335. package/dist/mjs/interfaces/singly-linked-list.js +2 -0
  336. package/dist/mjs/types/data-structures/binary-tree/avl-tree.d.ts +4 -0
  337. package/dist/mjs/types/data-structures/binary-tree/avl-tree.js +2 -0
  338. package/dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.js +2 -0
  339. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +29 -0
  340. package/dist/mjs/types/data-structures/binary-tree/binary-tree.js +24 -0
  341. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +7 -0
  342. package/dist/mjs/types/data-structures/binary-tree/bst.js +2 -0
  343. package/dist/mjs/types/data-structures/binary-tree/index.d.ts +6 -0
  344. package/dist/mjs/types/data-structures/binary-tree/index.js +22 -0
  345. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -0
  346. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +13 -0
  347. package/dist/mjs/types/data-structures/binary-tree/segment-tree.js +2 -0
  348. package/dist/mjs/types/data-structures/binary-tree/tree-multiset.d.ts +4 -0
  349. package/dist/mjs/types/data-structures/binary-tree/tree-multiset.js +2 -0
  350. package/dist/mjs/types/data-structures/graph/abstract-graph.d.ts +10 -0
  351. package/dist/mjs/types/data-structures/graph/abstract-graph.js +2 -0
  352. package/dist/mjs/types/data-structures/graph/directed-graph.js +9 -0
  353. package/dist/mjs/types/data-structures/graph/index.d.ts +3 -0
  354. package/dist/mjs/types/data-structures/graph/index.js +19 -0
  355. package/dist/mjs/types/data-structures/graph/map-graph.js +2 -0
  356. package/dist/mjs/types/data-structures/graph/undirected-graph.js +2 -0
  357. package/dist/mjs/types/data-structures/hash/coordinate-map.js +2 -0
  358. package/dist/mjs/types/data-structures/hash/coordinate-set.js +2 -0
  359. package/dist/mjs/types/data-structures/hash/hash-map.js +2 -0
  360. package/dist/mjs/types/data-structures/hash/hash-table.js +2 -0
  361. package/dist/mjs/types/data-structures/hash/index.js +2 -0
  362. package/dist/mjs/types/data-structures/hash/tree-map.js +2 -0
  363. package/dist/mjs/types/data-structures/hash/tree-set.js +2 -0
  364. package/dist/mjs/types/data-structures/heap/heap.js +2 -0
  365. package/dist/mjs/types/data-structures/heap/index.d.ts +1 -0
  366. package/dist/mjs/types/data-structures/heap/index.js +17 -0
  367. package/dist/mjs/types/data-structures/heap/max-heap.js +2 -0
  368. package/dist/mjs/types/data-structures/heap/min-heap.js +2 -0
  369. package/dist/mjs/types/data-structures/index.d.ts +11 -0
  370. package/dist/mjs/types/data-structures/index.js +27 -0
  371. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js +2 -0
  372. package/dist/mjs/types/data-structures/linked-list/index.d.ts +2 -0
  373. package/dist/mjs/types/data-structures/linked-list/index.js +18 -0
  374. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js +2 -0
  375. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.d.ts +1 -0
  376. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js +2 -0
  377. package/dist/mjs/types/data-structures/matrix/index.d.ts +1 -0
  378. package/dist/mjs/types/data-structures/matrix/index.js +17 -0
  379. package/dist/mjs/types/data-structures/matrix/matrix.d.ts +1 -0
  380. package/dist/mjs/types/data-structures/matrix/matrix.js +2 -0
  381. package/dist/mjs/types/data-structures/matrix/matrix2d.d.ts +1 -0
  382. package/dist/mjs/types/data-structures/matrix/matrix2d.js +2 -0
  383. package/dist/mjs/types/data-structures/matrix/navigator.js +2 -0
  384. package/dist/mjs/types/data-structures/matrix/vector2d.d.ts +1 -0
  385. package/dist/mjs/types/data-structures/matrix/vector2d.js +2 -0
  386. package/dist/mjs/types/data-structures/priority-queue/index.d.ts +3 -0
  387. package/dist/mjs/types/data-structures/priority-queue/index.js +19 -0
  388. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -0
  389. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js +2 -0
  390. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.d.ts +1 -0
  391. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js +2 -0
  392. package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  393. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js +2 -0
  394. package/dist/mjs/types/data-structures/queue/deque.d.ts +1 -0
  395. package/dist/mjs/types/data-structures/queue/deque.js +2 -0
  396. package/dist/mjs/types/data-structures/queue/index.d.ts +2 -0
  397. package/dist/mjs/types/data-structures/queue/index.js +18 -0
  398. package/dist/mjs/types/data-structures/queue/queue.d.ts +1 -0
  399. package/dist/mjs/types/data-structures/queue/queue.js +2 -0
  400. package/dist/mjs/types/data-structures/stack/index.d.ts +1 -0
  401. package/dist/mjs/types/data-structures/stack/index.js +17 -0
  402. package/dist/mjs/types/data-structures/stack/stack.d.ts +1 -0
  403. package/dist/mjs/types/data-structures/stack/stack.js +2 -0
  404. package/dist/mjs/types/data-structures/tree/index.d.ts +1 -0
  405. package/dist/mjs/types/data-structures/tree/index.js +17 -0
  406. package/dist/mjs/types/data-structures/tree/tree.d.ts +1 -0
  407. package/dist/mjs/types/data-structures/tree/tree.js +2 -0
  408. package/dist/mjs/types/data-structures/trie/index.d.ts +1 -0
  409. package/dist/mjs/types/data-structures/trie/index.js +17 -0
  410. package/dist/mjs/types/data-structures/trie/trie.d.ts +1 -0
  411. package/dist/mjs/types/data-structures/trie/trie.js +2 -0
  412. package/dist/mjs/types/helpers.d.ts +8 -0
  413. package/dist/mjs/types/helpers.js +9 -0
  414. package/dist/mjs/types/index.js +19 -0
  415. package/dist/mjs/types/utils/index.js +18 -0
  416. package/dist/mjs/types/utils/utils.js +2 -0
  417. package/dist/mjs/types/utils/validate-type.js +2 -0
  418. package/dist/mjs/utils/index.js +17 -0
  419. package/dist/mjs/utils/utils.d.ts +20 -0
  420. package/dist/mjs/utils/utils.js +64 -0
  421. package/dist/umd/data-structure-typed.min.js +27 -0
  422. package/dist/umd/data-structure-typed.min.js.map +1 -0
  423. package/package.json +28 -22
  424. package/src/data-structures/binary-tree/avl-tree.ts +88 -74
  425. package/src/data-structures/binary-tree/binary-indexed-tree.ts +265 -35
  426. package/src/data-structures/binary-tree/binary-tree.ts +1263 -26
  427. package/src/data-structures/binary-tree/bst.ts +217 -237
  428. package/src/data-structures/binary-tree/index.ts +0 -5
  429. package/src/data-structures/binary-tree/rb-tree.ts +416 -356
  430. package/src/data-structures/binary-tree/segment-tree.ts +25 -92
  431. package/src/data-structures/binary-tree/tree-multiset.ts +113 -422
  432. package/src/data-structures/graph/abstract-graph.ts +169 -214
  433. package/src/data-structures/graph/directed-graph.ts +105 -126
  434. package/src/data-structures/graph/map-graph.ts +29 -57
  435. package/src/data-structures/graph/undirected-graph.ts +67 -82
  436. package/src/data-structures/hash/coordinate-map.ts +0 -4
  437. package/src/data-structures/hash/coordinate-set.ts +0 -4
  438. package/src/data-structures/hash/hash-map.ts +65 -83
  439. package/src/data-structures/hash/hash-table.ts +109 -118
  440. package/src/data-structures/hash/index.ts +0 -1
  441. package/src/data-structures/hash/tree-map.ts +2 -1
  442. package/src/data-structures/hash/tree-set.ts +2 -1
  443. package/src/data-structures/heap/heap.ts +505 -128
  444. package/src/data-structures/heap/max-heap.ts +16 -21
  445. package/src/data-structures/heap/min-heap.ts +16 -22
  446. package/src/data-structures/linked-list/doubly-linked-list.ts +143 -174
  447. package/src/data-structures/linked-list/singly-linked-list.ts +174 -99
  448. package/src/data-structures/linked-list/skip-linked-list.ts +104 -49
  449. package/src/data-structures/matrix/matrix.ts +2 -2
  450. package/src/data-structures/matrix/matrix2d.ts +12 -14
  451. package/src/data-structures/matrix/navigator.ts +4 -4
  452. package/src/data-structures/matrix/vector2d.ts +2 -3
  453. package/src/data-structures/priority-queue/max-priority-queue.ts +15 -46
  454. package/src/data-structures/priority-queue/min-priority-queue.ts +15 -47
  455. package/src/data-structures/priority-queue/priority-queue.ts +7 -350
  456. package/src/data-structures/queue/deque.ts +62 -77
  457. package/src/data-structures/queue/queue.ts +39 -21
  458. package/src/data-structures/stack/stack.ts +13 -9
  459. package/src/data-structures/tree/tree.ts +10 -38
  460. package/src/data-structures/trie/trie.ts +108 -71
  461. package/src/interfaces/binary-tree.ts +7 -4
  462. package/src/interfaces/graph.ts +7 -0
  463. package/src/interfaces/index.ts +1 -8
  464. package/src/types/data-structures/binary-tree/avl-tree.ts +5 -0
  465. package/src/types/data-structures/binary-tree/binary-indexed-tree.ts +1 -0
  466. package/src/types/data-structures/binary-tree/binary-tree.ts +31 -0
  467. package/src/types/data-structures/binary-tree/bst.ts +11 -0
  468. package/src/types/data-structures/binary-tree/index.ts +6 -0
  469. package/src/types/data-structures/binary-tree/rb-tree.ts +8 -0
  470. package/src/types/data-structures/binary-tree/tree-multiset.ts +6 -0
  471. package/src/types/data-structures/graph/abstract-graph.ts +11 -0
  472. package/src/types/data-structures/graph/index.ts +3 -0
  473. package/src/types/data-structures/graph/undirected-graph.ts +1 -0
  474. package/src/types/data-structures/hash/coordinate-map.ts +1 -0
  475. package/src/types/data-structures/hash/coordinate-set.ts +1 -0
  476. package/src/types/data-structures/hash/hash-map.ts +1 -0
  477. package/src/types/data-structures/hash/hash-table.ts +1 -0
  478. package/src/types/data-structures/hash/tree-map.ts +1 -0
  479. package/src/types/data-structures/hash/tree-set.ts +1 -0
  480. package/src/types/data-structures/heap/heap.ts +1 -0
  481. package/src/types/data-structures/heap/index.ts +1 -0
  482. package/src/types/data-structures/heap/max-heap.ts +1 -0
  483. package/src/types/data-structures/heap/min-heap.ts +1 -0
  484. package/src/types/data-structures/index.ts +8 -13
  485. package/src/types/data-structures/linked-list/doubly-linked-list.ts +1 -0
  486. package/src/types/data-structures/linked-list/index.ts +2 -0
  487. package/src/types/data-structures/linked-list/singly-linked-list.ts +1 -0
  488. package/src/types/data-structures/linked-list/skip-linked-list.ts +1 -0
  489. package/src/types/data-structures/matrix/index.ts +1 -0
  490. package/src/types/data-structures/matrix/matrix.ts +1 -0
  491. package/src/types/data-structures/matrix/matrix2d.ts +1 -0
  492. package/src/types/data-structures/matrix/navigator.ts +14 -0
  493. package/src/types/data-structures/matrix/vector2d.ts +1 -0
  494. package/src/types/data-structures/priority-queue/index.ts +3 -0
  495. package/src/types/data-structures/priority-queue/max-priority-queue.ts +1 -0
  496. package/src/types/data-structures/priority-queue/min-priority-queue.ts +1 -0
  497. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  498. package/src/types/data-structures/queue/deque.ts +1 -0
  499. package/src/types/data-structures/queue/index.ts +2 -0
  500. package/src/types/data-structures/queue/queue.ts +1 -0
  501. package/src/types/data-structures/stack/index.ts +1 -0
  502. package/src/types/data-structures/stack/stack.ts +1 -0
  503. package/src/types/data-structures/tree/index.ts +1 -0
  504. package/src/types/data-structures/tree/tree.ts +1 -0
  505. package/src/types/data-structures/trie/index.ts +1 -0
  506. package/src/types/data-structures/trie/trie.ts +1 -0
  507. package/src/types/helpers.ts +11 -1
  508. package/src/types/utils/utils.ts +1 -1
  509. package/src/types/utils/validate-type.ts +2 -2
  510. package/src/utils/utils.ts +7 -0
  511. package/test/config.js +4 -0
  512. package/test/config.ts +1 -0
  513. package/test/integration/avl-tree.test.ts +24 -22
  514. package/test/integration/bst.test.ts +52 -47
  515. package/test/integration/index.html +3 -4
  516. package/test/types/index.js +29 -0
  517. package/test/types/utils/big-o.js +2 -0
  518. package/test/types/utils/big-o.ts +1 -0
  519. package/test/types/utils/index.js +29 -0
  520. package/test/types/utils/index.ts +1 -0
  521. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +184 -23
  522. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +320 -0
  523. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +393 -40
  524. package/test/unit/data-structures/binary-tree/bst.test.ts +506 -48
  525. package/test/unit/data-structures/binary-tree/overall.test.ts +8 -7
  526. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +240 -41
  527. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +296 -215
  528. package/test/unit/data-structures/graph/abstract-graph.test.ts +97 -2
  529. package/test/unit/data-structures/graph/directed-graph.test.ts +76 -31
  530. package/test/unit/data-structures/graph/map-graph.test.ts +93 -12
  531. package/test/unit/data-structures/graph/overall.test.ts +2 -2
  532. package/test/unit/data-structures/graph/undirected-graph.test.ts +93 -3
  533. package/test/unit/data-structures/hash/coordinate-map.test.ts +20 -0
  534. package/test/unit/data-structures/hash/coordinate-set.test.ts +25 -0
  535. package/test/unit/data-structures/hash/hash-map.test.ts +2 -3
  536. package/test/unit/data-structures/hash/hash-table.test.ts +10 -8
  537. package/test/unit/data-structures/heap/heap.test.ts +218 -20
  538. package/test/unit/data-structures/heap/max-heap.test.ts +50 -42
  539. package/test/unit/data-structures/heap/min-heap.test.ts +38 -68
  540. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +86 -27
  541. package/test/unit/data-structures/linked-list/linked-list.test.ts +4 -4
  542. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +71 -27
  543. package/test/unit/data-structures/linked-list/skip-list.test.ts +33 -2
  544. package/test/unit/data-structures/matrix/matrix2d.test.ts +207 -0
  545. package/test/unit/data-structures/matrix/navigator.test.ts +167 -2
  546. package/test/unit/data-structures/matrix/vector2d.test.ts +171 -0
  547. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +10 -11
  548. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -1
  549. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +14 -30
  550. package/test/unit/data-structures/queue/deque.test.ts +303 -23
  551. package/test/unit/data-structures/queue/queue.test.ts +52 -8
  552. package/test/unit/data-structures/tree/tree.test.ts +2 -2
  553. package/test/unit/data-structures/trie/trie.test.ts +743 -13
  554. package/test/utils/big-o.js +212 -0
  555. package/test/utils/big-o.ts +201 -0
  556. package/test/utils/index.js +30 -0
  557. package/test/utils/index.ts +1 -1
  558. package/test/utils/number.js +14 -0
  559. package/tsconfig-base.json +27 -0
  560. package/tsconfig-cjs.json +9 -0
  561. package/tsup.config.js +18 -0
  562. package/umd/bundle.min.js +1 -1
  563. package/umd/bundle.min.js.LICENSE.txt +15 -0
  564. package/umd/bundle.min.js.map +1 -1
  565. package/dist/data-structures/binary-tree/aa-tree.d.ts +0 -2
  566. package/dist/data-structures/binary-tree/aa-tree.js +0 -7
  567. package/dist/data-structures/binary-tree/aa-tree.js.map +0 -1
  568. package/dist/data-structures/binary-tree/abstract-binary-tree.d.ts +0 -527
  569. package/dist/data-structures/binary-tree/abstract-binary-tree.js +0 -1199
  570. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +0 -1
  571. package/dist/data-structures/binary-tree/avl-tree.d.ts +0 -94
  572. package/dist/data-structures/binary-tree/avl-tree.js +0 -336
  573. package/dist/data-structures/binary-tree/avl-tree.js.map +0 -1
  574. package/dist/data-structures/binary-tree/b-tree.d.ts +0 -2
  575. package/dist/data-structures/binary-tree/b-tree.js +0 -7
  576. package/dist/data-structures/binary-tree/b-tree.js.map +0 -1
  577. package/dist/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -46
  578. package/dist/data-structures/binary-tree/binary-indexed-tree.js +0 -74
  579. package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  580. package/dist/data-structures/binary-tree/binary-tree.d.ts +0 -31
  581. package/dist/data-structures/binary-tree/binary-tree.js +0 -41
  582. package/dist/data-structures/binary-tree/binary-tree.js.map +0 -1
  583. package/dist/data-structures/binary-tree/bst.d.ts +0 -133
  584. package/dist/data-structures/binary-tree/bst.js +0 -554
  585. package/dist/data-structures/binary-tree/bst.js.map +0 -1
  586. package/dist/data-structures/binary-tree/index.d.ts +0 -12
  587. package/dist/data-structures/binary-tree/index.js +0 -29
  588. package/dist/data-structures/binary-tree/index.js.map +0 -1
  589. package/dist/data-structures/binary-tree/rb-tree.d.ts +0 -13
  590. package/dist/data-structures/binary-tree/rb-tree.js +0 -28
  591. package/dist/data-structures/binary-tree/rb-tree.js.map +0 -1
  592. package/dist/data-structures/binary-tree/segment-tree.d.ts +0 -83
  593. package/dist/data-structures/binary-tree/segment-tree.js +0 -229
  594. package/dist/data-structures/binary-tree/segment-tree.js.map +0 -1
  595. package/dist/data-structures/binary-tree/splay-tree.d.ts +0 -2
  596. package/dist/data-structures/binary-tree/splay-tree.js +0 -7
  597. package/dist/data-structures/binary-tree/splay-tree.js.map +0 -1
  598. package/dist/data-structures/binary-tree/tree-multiset.d.ts +0 -209
  599. package/dist/data-structures/binary-tree/tree-multiset.js +0 -669
  600. package/dist/data-structures/binary-tree/tree-multiset.js.map +0 -1
  601. package/dist/data-structures/binary-tree/two-three-tree.d.ts +0 -2
  602. package/dist/data-structures/binary-tree/two-three-tree.js +0 -7
  603. package/dist/data-structures/binary-tree/two-three-tree.js.map +0 -1
  604. package/dist/data-structures/graph/abstract-graph.d.ts +0 -332
  605. package/dist/data-structures/graph/abstract-graph.js +0 -925
  606. package/dist/data-structures/graph/abstract-graph.js.map +0 -1
  607. package/dist/data-structures/graph/directed-graph.d.ts +0 -200
  608. package/dist/data-structures/graph/directed-graph.js +0 -423
  609. package/dist/data-structures/graph/directed-graph.js.map +0 -1
  610. package/dist/data-structures/graph/index.js.map +0 -1
  611. package/dist/data-structures/graph/map-graph.d.ts +0 -79
  612. package/dist/data-structures/graph/map-graph.js +0 -112
  613. package/dist/data-structures/graph/map-graph.js.map +0 -1
  614. package/dist/data-structures/graph/undirected-graph.d.ts +0 -127
  615. package/dist/data-structures/graph/undirected-graph.js +0 -253
  616. package/dist/data-structures/graph/undirected-graph.js.map +0 -1
  617. package/dist/data-structures/hash/coordinate-map.d.ts +0 -45
  618. package/dist/data-structures/hash/coordinate-map.js +0 -66
  619. package/dist/data-structures/hash/coordinate-map.js.map +0 -1
  620. package/dist/data-structures/hash/coordinate-set.d.ts +0 -37
  621. package/dist/data-structures/hash/coordinate-set.js +0 -56
  622. package/dist/data-structures/hash/coordinate-set.js.map +0 -1
  623. package/dist/data-structures/hash/hash-map.d.ts +0 -56
  624. package/dist/data-structures/hash/hash-map.js +0 -172
  625. package/dist/data-structures/hash/hash-map.js.map +0 -1
  626. package/dist/data-structures/hash/hash-table.d.ts +0 -106
  627. package/dist/data-structures/hash/hash-table.js +0 -246
  628. package/dist/data-structures/hash/hash-table.js.map +0 -1
  629. package/dist/data-structures/hash/index.d.ts +0 -7
  630. package/dist/data-structures/hash/index.js +0 -24
  631. package/dist/data-structures/hash/index.js.map +0 -1
  632. package/dist/data-structures/hash/pair.d.ts +0 -2
  633. package/dist/data-structures/hash/pair.js +0 -7
  634. package/dist/data-structures/hash/pair.js.map +0 -1
  635. package/dist/data-structures/hash/tree-map.js.map +0 -1
  636. package/dist/data-structures/hash/tree-set.js.map +0 -1
  637. package/dist/data-structures/heap/heap.d.ts +0 -83
  638. package/dist/data-structures/heap/heap.js +0 -158
  639. package/dist/data-structures/heap/heap.js.map +0 -1
  640. package/dist/data-structures/heap/index.js.map +0 -1
  641. package/dist/data-structures/heap/max-heap.d.ts +0 -23
  642. package/dist/data-structures/heap/max-heap.js +0 -31
  643. package/dist/data-structures/heap/max-heap.js.map +0 -1
  644. package/dist/data-structures/heap/min-heap.d.ts +0 -24
  645. package/dist/data-structures/heap/min-heap.js +0 -32
  646. package/dist/data-structures/heap/min-heap.js.map +0 -1
  647. package/dist/data-structures/index.js.map +0 -1
  648. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +0 -234
  649. package/dist/data-structures/linked-list/doubly-linked-list.js +0 -584
  650. package/dist/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  651. package/dist/data-structures/linked-list/index.js.map +0 -1
  652. package/dist/data-structures/linked-list/singly-linked-list.d.ts +0 -157
  653. package/dist/data-structures/linked-list/singly-linked-list.js +0 -449
  654. package/dist/data-structures/linked-list/singly-linked-list.js.map +0 -1
  655. package/dist/data-structures/linked-list/skip-linked-list.d.ts +0 -61
  656. package/dist/data-structures/linked-list/skip-linked-list.js +0 -143
  657. package/dist/data-structures/linked-list/skip-linked-list.js.map +0 -1
  658. package/dist/data-structures/matrix/index.js.map +0 -1
  659. package/dist/data-structures/matrix/matrix.d.ts +0 -21
  660. package/dist/data-structures/matrix/matrix.js.map +0 -1
  661. package/dist/data-structures/matrix/matrix2d.d.ts +0 -108
  662. package/dist/data-structures/matrix/matrix2d.js +0 -201
  663. package/dist/data-structures/matrix/matrix2d.js.map +0 -1
  664. package/dist/data-structures/matrix/navigator.d.ts +0 -52
  665. package/dist/data-structures/matrix/navigator.js.map +0 -1
  666. package/dist/data-structures/matrix/vector2d.d.ts +0 -201
  667. package/dist/data-structures/matrix/vector2d.js +0 -292
  668. package/dist/data-structures/matrix/vector2d.js.map +0 -1
  669. package/dist/data-structures/priority-queue/index.js.map +0 -1
  670. package/dist/data-structures/priority-queue/max-priority-queue.d.ts +0 -15
  671. package/dist/data-structures/priority-queue/max-priority-queue.js +0 -44
  672. package/dist/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  673. package/dist/data-structures/priority-queue/min-priority-queue.d.ts +0 -15
  674. package/dist/data-structures/priority-queue/min-priority-queue.js +0 -45
  675. package/dist/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  676. package/dist/data-structures/priority-queue/priority-queue.d.ts +0 -180
  677. package/dist/data-structures/priority-queue/priority-queue.js +0 -322
  678. package/dist/data-structures/priority-queue/priority-queue.js.map +0 -1
  679. package/dist/data-structures/queue/deque.d.ts +0 -165
  680. package/dist/data-structures/queue/deque.js +0 -277
  681. package/dist/data-structures/queue/deque.js.map +0 -1
  682. package/dist/data-structures/queue/index.js.map +0 -1
  683. package/dist/data-structures/queue/queue.d.ts +0 -107
  684. package/dist/data-structures/queue/queue.js +0 -171
  685. package/dist/data-structures/queue/queue.js.map +0 -1
  686. package/dist/data-structures/stack/index.js.map +0 -1
  687. package/dist/data-structures/stack/stack.d.ts +0 -63
  688. package/dist/data-structures/stack/stack.js +0 -92
  689. package/dist/data-structures/stack/stack.js.map +0 -1
  690. package/dist/data-structures/tree/index.js.map +0 -1
  691. package/dist/data-structures/tree/tree.d.ts +0 -14
  692. package/dist/data-structures/tree/tree.js +0 -61
  693. package/dist/data-structures/tree/tree.js.map +0 -1
  694. package/dist/data-structures/trie/index.js.map +0 -1
  695. package/dist/data-structures/trie/trie.d.ts +0 -61
  696. package/dist/data-structures/trie/trie.js +0 -211
  697. package/dist/data-structures/trie/trie.js.map +0 -1
  698. package/dist/index.js.map +0 -1
  699. package/dist/interfaces/abstract-binary-tree.d.ts +0 -7
  700. package/dist/interfaces/abstract-binary-tree.js +0 -3
  701. package/dist/interfaces/abstract-binary-tree.js.map +0 -1
  702. package/dist/interfaces/abstract-graph.d.ts +0 -5
  703. package/dist/interfaces/abstract-graph.js.map +0 -1
  704. package/dist/interfaces/avl-tree.d.ts +0 -7
  705. package/dist/interfaces/avl-tree.js.map +0 -1
  706. package/dist/interfaces/binary-tree.d.ts +0 -6
  707. package/dist/interfaces/binary-tree.js.map +0 -1
  708. package/dist/interfaces/bst.d.ts +0 -6
  709. package/dist/interfaces/bst.js.map +0 -1
  710. package/dist/interfaces/directed-graph.d.ts +0 -3
  711. package/dist/interfaces/directed-graph.js +0 -3
  712. package/dist/interfaces/directed-graph.js.map +0 -1
  713. package/dist/interfaces/doubly-linked-list.js.map +0 -1
  714. package/dist/interfaces/heap.js.map +0 -1
  715. package/dist/interfaces/index.d.ts +0 -15
  716. package/dist/interfaces/index.js +0 -32
  717. package/dist/interfaces/index.js.map +0 -1
  718. package/dist/interfaces/navigator.js.map +0 -1
  719. package/dist/interfaces/priority-queue.js.map +0 -1
  720. package/dist/interfaces/rb-tree.d.ts +0 -6
  721. package/dist/interfaces/rb-tree.js +0 -3
  722. package/dist/interfaces/rb-tree.js.map +0 -1
  723. package/dist/interfaces/segment-tree.js.map +0 -1
  724. package/dist/interfaces/singly-linked-list.js.map +0 -1
  725. package/dist/interfaces/tree-multiset.d.ts +0 -6
  726. package/dist/interfaces/tree-multiset.js.map +0 -1
  727. package/dist/interfaces/undirected-graph.d.ts +0 -3
  728. package/dist/interfaces/undirected-graph.js.map +0 -1
  729. package/dist/types/data-structures/abstract-binary-tree.d.ts +0 -34
  730. package/dist/types/data-structures/abstract-binary-tree.js +0 -25
  731. package/dist/types/data-structures/abstract-binary-tree.js.map +0 -1
  732. package/dist/types/data-structures/abstract-graph.d.ts +0 -11
  733. package/dist/types/data-structures/abstract-graph.js +0 -3
  734. package/dist/types/data-structures/abstract-graph.js.map +0 -1
  735. package/dist/types/data-structures/avl-tree.d.ts +0 -4
  736. package/dist/types/data-structures/avl-tree.js +0 -3
  737. package/dist/types/data-structures/avl-tree.js.map +0 -1
  738. package/dist/types/data-structures/binary-tree.d.ts +0 -4
  739. package/dist/types/data-structures/binary-tree.js +0 -3
  740. package/dist/types/data-structures/binary-tree.js.map +0 -1
  741. package/dist/types/data-structures/bst.d.ts +0 -13
  742. package/dist/types/data-structures/bst.js +0 -10
  743. package/dist/types/data-structures/bst.js.map +0 -1
  744. package/dist/types/data-structures/directed-graph.js.map +0 -1
  745. package/dist/types/data-structures/doubly-linked-list.js.map +0 -1
  746. package/dist/types/data-structures/hash.js +0 -3
  747. package/dist/types/data-structures/hash.js.map +0 -1
  748. package/dist/types/data-structures/heap.d.ts +0 -3
  749. package/dist/types/data-structures/heap.js.map +0 -1
  750. package/dist/types/data-structures/index.d.ts +0 -16
  751. package/dist/types/data-structures/index.js +0 -33
  752. package/dist/types/data-structures/index.js.map +0 -1
  753. package/dist/types/data-structures/map-graph.js.map +0 -1
  754. package/dist/types/data-structures/navigator.js.map +0 -1
  755. package/dist/types/data-structures/priority-queue.d.ts +0 -7
  756. package/dist/types/data-structures/priority-queue.js.map +0 -1
  757. package/dist/types/data-structures/rb-tree.d.ts +0 -8
  758. package/dist/types/data-structures/rb-tree.js +0 -9
  759. package/dist/types/data-structures/rb-tree.js.map +0 -1
  760. package/dist/types/data-structures/segment-tree.js.map +0 -1
  761. package/dist/types/data-structures/singly-linked-list.js.map +0 -1
  762. package/dist/types/data-structures/tree-multiset.d.ts +0 -4
  763. package/dist/types/data-structures/tree-multiset.js +0 -3
  764. package/dist/types/data-structures/tree-multiset.js.map +0 -1
  765. package/dist/types/helpers.js +0 -3
  766. package/dist/types/helpers.js.map +0 -1
  767. package/dist/types/index.js.map +0 -1
  768. package/dist/types/utils/index.js.map +0 -1
  769. package/dist/types/utils/utils.js.map +0 -1
  770. package/dist/types/utils/validate-type.js.map +0 -1
  771. package/dist/utils/index.js.map +0 -1
  772. package/dist/utils/utils.d.ts +0 -19
  773. package/dist/utils/utils.js +0 -67
  774. package/dist/utils/utils.js.map +0 -1
  775. package/lib/data-structures/binary-tree/aa-tree.d.ts +0 -2
  776. package/lib/data-structures/binary-tree/aa-tree.js +0 -2
  777. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +0 -527
  778. package/lib/data-structures/binary-tree/abstract-binary-tree.js +0 -1193
  779. package/lib/data-structures/binary-tree/avl-tree.d.ts +0 -94
  780. package/lib/data-structures/binary-tree/avl-tree.js +0 -330
  781. package/lib/data-structures/binary-tree/b-tree.d.ts +0 -2
  782. package/lib/data-structures/binary-tree/b-tree.js +0 -2
  783. package/lib/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -46
  784. package/lib/data-structures/binary-tree/binary-indexed-tree.js +0 -69
  785. package/lib/data-structures/binary-tree/binary-tree.d.ts +0 -31
  786. package/lib/data-structures/binary-tree/binary-tree.js +0 -35
  787. package/lib/data-structures/binary-tree/bst.d.ts +0 -133
  788. package/lib/data-structures/binary-tree/bst.js +0 -548
  789. package/lib/data-structures/binary-tree/index.d.ts +0 -12
  790. package/lib/data-structures/binary-tree/index.js +0 -12
  791. package/lib/data-structures/binary-tree/rb-tree.d.ts +0 -13
  792. package/lib/data-structures/binary-tree/rb-tree.js +0 -22
  793. package/lib/data-structures/binary-tree/segment-tree.d.ts +0 -83
  794. package/lib/data-structures/binary-tree/segment-tree.js +0 -223
  795. package/lib/data-structures/binary-tree/splay-tree.d.ts +0 -2
  796. package/lib/data-structures/binary-tree/splay-tree.js +0 -2
  797. package/lib/data-structures/binary-tree/tree-multiset.d.ts +0 -209
  798. package/lib/data-structures/binary-tree/tree-multiset.js +0 -663
  799. package/lib/data-structures/binary-tree/two-three-tree.d.ts +0 -2
  800. package/lib/data-structures/binary-tree/two-three-tree.js +0 -2
  801. package/lib/data-structures/graph/abstract-graph.d.ts +0 -332
  802. package/lib/data-structures/graph/abstract-graph.js +0 -918
  803. package/lib/data-structures/graph/directed-graph.d.ts +0 -200
  804. package/lib/data-structures/graph/directed-graph.js +0 -416
  805. package/lib/data-structures/graph/index.js +0 -4
  806. package/lib/data-structures/graph/map-graph.d.ts +0 -79
  807. package/lib/data-structures/graph/map-graph.js +0 -105
  808. package/lib/data-structures/graph/undirected-graph.d.ts +0 -127
  809. package/lib/data-structures/graph/undirected-graph.js +0 -246
  810. package/lib/data-structures/hash/coordinate-map.d.ts +0 -45
  811. package/lib/data-structures/hash/coordinate-map.js +0 -61
  812. package/lib/data-structures/hash/coordinate-set.d.ts +0 -37
  813. package/lib/data-structures/hash/coordinate-set.js +0 -51
  814. package/lib/data-structures/hash/hash-map.d.ts +0 -56
  815. package/lib/data-structures/hash/hash-map.js +0 -167
  816. package/lib/data-structures/hash/hash-table.d.ts +0 -106
  817. package/lib/data-structures/hash/hash-table.js +0 -240
  818. package/lib/data-structures/hash/index.d.ts +0 -7
  819. package/lib/data-structures/hash/index.js +0 -7
  820. package/lib/data-structures/hash/pair.d.ts +0 -2
  821. package/lib/data-structures/hash/pair.js +0 -2
  822. package/lib/data-structures/hash/tree-map.js +0 -2
  823. package/lib/data-structures/hash/tree-set.js +0 -2
  824. package/lib/data-structures/heap/heap.d.ts +0 -83
  825. package/lib/data-structures/heap/heap.js +0 -152
  826. package/lib/data-structures/heap/index.js +0 -3
  827. package/lib/data-structures/heap/max-heap.d.ts +0 -23
  828. package/lib/data-structures/heap/max-heap.js +0 -26
  829. package/lib/data-structures/heap/min-heap.d.ts +0 -24
  830. package/lib/data-structures/heap/min-heap.js +0 -27
  831. package/lib/data-structures/index.js +0 -11
  832. package/lib/data-structures/linked-list/doubly-linked-list.d.ts +0 -234
  833. package/lib/data-structures/linked-list/doubly-linked-list.js +0 -578
  834. package/lib/data-structures/linked-list/index.js +0 -3
  835. package/lib/data-structures/linked-list/singly-linked-list.d.ts +0 -157
  836. package/lib/data-structures/linked-list/singly-linked-list.js +0 -443
  837. package/lib/data-structures/linked-list/skip-linked-list.d.ts +0 -61
  838. package/lib/data-structures/linked-list/skip-linked-list.js +0 -137
  839. package/lib/data-structures/matrix/index.js +0 -4
  840. package/lib/data-structures/matrix/matrix.d.ts +0 -21
  841. package/lib/data-structures/matrix/matrix.js +0 -24
  842. package/lib/data-structures/matrix/matrix2d.d.ts +0 -108
  843. package/lib/data-structures/matrix/matrix2d.js +0 -196
  844. package/lib/data-structures/matrix/navigator.d.ts +0 -52
  845. package/lib/data-structures/matrix/navigator.js +0 -101
  846. package/lib/data-structures/matrix/vector2d.d.ts +0 -201
  847. package/lib/data-structures/matrix/vector2d.js +0 -287
  848. package/lib/data-structures/priority-queue/max-priority-queue.d.ts +0 -15
  849. package/lib/data-structures/priority-queue/max-priority-queue.js +0 -39
  850. package/lib/data-structures/priority-queue/min-priority-queue.d.ts +0 -15
  851. package/lib/data-structures/priority-queue/min-priority-queue.js +0 -40
  852. package/lib/data-structures/priority-queue/priority-queue.d.ts +0 -180
  853. package/lib/data-structures/priority-queue/priority-queue.js +0 -317
  854. package/lib/data-structures/queue/deque.d.ts +0 -165
  855. package/lib/data-structures/queue/deque.js +0 -270
  856. package/lib/data-structures/queue/queue.d.ts +0 -107
  857. package/lib/data-structures/queue/queue.js +0 -165
  858. package/lib/data-structures/stack/stack.d.ts +0 -63
  859. package/lib/data-structures/stack/stack.js +0 -87
  860. package/lib/data-structures/tree/tree.d.ts +0 -14
  861. package/lib/data-structures/tree/tree.js +0 -56
  862. package/lib/data-structures/trie/trie.d.ts +0 -61
  863. package/lib/data-structures/trie/trie.js +0 -205
  864. package/lib/index.js +0 -4
  865. package/lib/interfaces/abstract-binary-tree.d.ts +0 -7
  866. package/lib/interfaces/abstract-graph.d.ts +0 -5
  867. package/lib/interfaces/avl-tree.d.ts +0 -7
  868. package/lib/interfaces/binary-tree.d.ts +0 -6
  869. package/lib/interfaces/bst.d.ts +0 -6
  870. package/lib/interfaces/directed-graph.d.ts +0 -3
  871. package/lib/interfaces/index.d.ts +0 -15
  872. package/lib/interfaces/index.js +0 -15
  873. package/lib/interfaces/rb-tree.d.ts +0 -6
  874. package/lib/interfaces/tree-multiset.d.ts +0 -6
  875. package/lib/interfaces/undirected-graph.d.ts +0 -3
  876. package/lib/types/data-structures/abstract-binary-tree.d.ts +0 -34
  877. package/lib/types/data-structures/abstract-binary-tree.js +0 -21
  878. package/lib/types/data-structures/abstract-graph.d.ts +0 -11
  879. package/lib/types/data-structures/avl-tree.d.ts +0 -4
  880. package/lib/types/data-structures/binary-tree.d.ts +0 -4
  881. package/lib/types/data-structures/bst.d.ts +0 -13
  882. package/lib/types/data-structures/bst.js +0 -6
  883. package/lib/types/data-structures/directed-graph.js +0 -6
  884. package/lib/types/data-structures/heap.d.ts +0 -3
  885. package/lib/types/data-structures/index.d.ts +0 -16
  886. package/lib/types/data-structures/index.js +0 -16
  887. package/lib/types/data-structures/priority-queue.d.ts +0 -7
  888. package/lib/types/data-structures/rb-tree.d.ts +0 -8
  889. package/lib/types/data-structures/rb-tree.js +0 -5
  890. package/lib/types/data-structures/tree-multiset.d.ts +0 -4
  891. package/lib/types/index.js +0 -3
  892. package/lib/types/utils/index.js +0 -2
  893. package/lib/utils/utils.d.ts +0 -19
  894. package/lib/utils/utils.js +0 -57
  895. package/scripts/rename_clear_files.sh +0 -29
  896. package/src/data-structures/binary-tree/aa-tree.ts +0 -1
  897. package/src/data-structures/binary-tree/abstract-binary-tree.ts +0 -1556
  898. package/src/data-structures/binary-tree/b-tree.ts +0 -1
  899. package/src/data-structures/binary-tree/splay-tree.ts +0 -1
  900. package/src/data-structures/binary-tree/two-three-tree.ts +0 -1
  901. package/src/data-structures/hash/pair.ts +0 -1
  902. package/src/interfaces/abstract-binary-tree.ts +0 -8
  903. package/src/interfaces/abstract-graph.ts +0 -7
  904. package/src/interfaces/avl-tree.ts +0 -8
  905. package/src/interfaces/bst.ts +0 -6
  906. package/src/interfaces/directed-graph.ts +0 -3
  907. package/src/interfaces/rb-tree.ts +0 -6
  908. package/src/interfaces/tree-multiset.ts +0 -7
  909. package/src/interfaces/undirected-graph.ts +0 -3
  910. package/src/types/data-structures/abstract-binary-tree.ts +0 -49
  911. package/src/types/data-structures/abstract-graph.ts +0 -11
  912. package/src/types/data-structures/avl-tree.ts +0 -5
  913. package/src/types/data-structures/binary-tree.ts +0 -5
  914. package/src/types/data-structures/bst.ts +0 -13
  915. package/src/types/data-structures/heap.ts +0 -5
  916. package/src/types/data-structures/navigator.ts +0 -13
  917. package/src/types/data-structures/priority-queue.ts +0 -9
  918. package/src/types/data-structures/rb-tree.ts +0 -8
  919. package/src/types/data-structures/tree-multiset.ts +0 -6
  920. package/test/utils/magnitude.ts +0 -21
  921. /package/dist/{data-structures → cjs/data-structures}/graph/index.d.ts +0 -0
  922. /package/dist/{data-structures → cjs/data-structures}/graph/index.js +0 -0
  923. /package/dist/{data-structures → cjs/data-structures}/hash/tree-map.d.ts +0 -0
  924. /package/dist/{data-structures → cjs/data-structures}/hash/tree-map.js +0 -0
  925. /package/dist/{data-structures → cjs/data-structures}/hash/tree-set.d.ts +0 -0
  926. /package/dist/{data-structures → cjs/data-structures}/hash/tree-set.js +0 -0
  927. /package/dist/{data-structures → cjs/data-structures}/heap/index.d.ts +0 -0
  928. /package/dist/{data-structures → cjs/data-structures}/heap/index.js +0 -0
  929. /package/dist/{data-structures → cjs/data-structures}/index.d.ts +0 -0
  930. /package/dist/{data-structures → cjs/data-structures}/index.js +0 -0
  931. /package/dist/{data-structures → cjs/data-structures}/linked-list/index.d.ts +0 -0
  932. /package/dist/{data-structures → cjs/data-structures}/linked-list/index.js +0 -0
  933. /package/dist/{data-structures → cjs/data-structures}/matrix/index.d.ts +0 -0
  934. /package/dist/{data-structures → cjs/data-structures}/matrix/index.js +0 -0
  935. /package/dist/{data-structures → cjs/data-structures}/matrix/matrix.js +0 -0
  936. /package/dist/{data-structures → cjs/data-structures}/matrix/navigator.js +0 -0
  937. /package/dist/{data-structures → cjs/data-structures}/priority-queue/index.d.ts +0 -0
  938. /package/dist/{data-structures → cjs/data-structures}/priority-queue/index.js +0 -0
  939. /package/dist/{data-structures → cjs/data-structures}/queue/index.d.ts +0 -0
  940. /package/dist/{data-structures → cjs/data-structures}/queue/index.js +0 -0
  941. /package/dist/{data-structures → cjs/data-structures}/stack/index.d.ts +0 -0
  942. /package/dist/{data-structures → cjs/data-structures}/stack/index.js +0 -0
  943. /package/dist/{data-structures → cjs/data-structures}/tree/index.d.ts +0 -0
  944. /package/dist/{data-structures → cjs/data-structures}/tree/index.js +0 -0
  945. /package/dist/{data-structures → cjs/data-structures}/trie/index.d.ts +0 -0
  946. /package/dist/{data-structures → cjs/data-structures}/trie/index.js +0 -0
  947. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  948. /package/dist/{index.js → cjs/index.js} +0 -0
  949. /package/dist/{interfaces → cjs/interfaces}/binary-tree.js +0 -0
  950. /package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.d.ts +0 -0
  951. /package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.js +0 -0
  952. /package/dist/{interfaces → cjs/interfaces}/heap.d.ts +0 -0
  953. /package/dist/{interfaces → cjs/interfaces}/heap.js +0 -0
  954. /package/dist/{interfaces → cjs/interfaces}/navigator.d.ts +0 -0
  955. /package/dist/{interfaces → cjs/interfaces}/navigator.js +0 -0
  956. /package/dist/{interfaces → cjs/interfaces}/priority-queue.d.ts +0 -0
  957. /package/dist/{interfaces → cjs/interfaces}/priority-queue.js +0 -0
  958. /package/dist/{interfaces → cjs/interfaces}/segment-tree.d.ts +0 -0
  959. /package/dist/{interfaces → cjs/interfaces}/segment-tree.js +0 -0
  960. /package/dist/{interfaces → cjs/interfaces}/singly-linked-list.d.ts +0 -0
  961. /package/dist/{interfaces → cjs/interfaces}/singly-linked-list.js +0 -0
  962. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/avl-tree.js +0 -0
  963. /package/dist/{types/data-structures/doubly-linked-list.d.ts → cjs/types/data-structures/binary-tree/binary-indexed-tree.d.ts} +0 -0
  964. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/bst.js +0 -0
  965. /package/dist/{types/data-structures → cjs/types/data-structures/binary-tree}/segment-tree.d.ts +0 -0
  966. /package/dist/{types/data-structures → cjs/types/data-structures/binary-tree}/segment-tree.js +0 -0
  967. /package/dist/{interfaces → cjs/types/data-structures/binary-tree}/tree-multiset.js +0 -0
  968. /package/dist/{interfaces → cjs/types/data-structures/graph}/abstract-graph.js +0 -0
  969. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/directed-graph.d.ts +0 -0
  970. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/directed-graph.js +0 -0
  971. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/map-graph.d.ts +0 -0
  972. /package/dist/{types/data-structures → cjs/types/data-structures/graph}/map-graph.js +0 -0
  973. /package/dist/{types/data-structures/singly-linked-list.d.ts → cjs/types/data-structures/graph/undirected-graph.d.ts} +0 -0
  974. /package/dist/{interfaces → cjs/types/data-structures/graph}/undirected-graph.js +0 -0
  975. /package/dist/{types/helpers.d.ts → cjs/types/data-structures/hash/coordinate-map.d.ts} +0 -0
  976. /package/{lib/interfaces/abstract-binary-tree.js → dist/cjs/types/data-structures/hash/coordinate-set.d.ts} +0 -0
  977. /package/{lib/interfaces/abstract-graph.js → dist/cjs/types/data-structures/hash/hash-map.d.ts} +0 -0
  978. /package/{lib/interfaces/avl-tree.js → dist/cjs/types/data-structures/hash/hash-table.d.ts} +0 -0
  979. /package/dist/{types/data-structures/hash.d.ts → cjs/types/data-structures/hash/index.d.ts} +0 -0
  980. /package/{lib/interfaces/binary-tree.js → dist/cjs/types/data-structures/hash/tree-map.d.ts} +0 -0
  981. /package/{lib/interfaces/bst.js → dist/cjs/types/data-structures/hash/tree-set.d.ts} +0 -0
  982. /package/{lib/interfaces → dist/cjs/types/data-structures/heap}/heap.d.ts +0 -0
  983. /package/dist/{types/data-structures → cjs/types/data-structures/heap}/heap.js +0 -0
  984. /package/{lib/interfaces/directed-graph.js → dist/cjs/types/data-structures/heap/max-heap.d.ts} +0 -0
  985. /package/{lib/interfaces/doubly-linked-list.d.ts → dist/cjs/types/data-structures/heap/min-heap.d.ts} +0 -0
  986. /package/{lib/types/data-structures → dist/cjs/types/data-structures/linked-list}/doubly-linked-list.d.ts +0 -0
  987. /package/dist/{types/data-structures → cjs/types/data-structures/linked-list}/doubly-linked-list.js +0 -0
  988. /package/{lib/interfaces → dist/cjs/types/data-structures/linked-list}/singly-linked-list.d.ts +0 -0
  989. /package/dist/{types/data-structures → cjs/types/data-structures/linked-list}/singly-linked-list.js +0 -0
  990. /package/{lib/interfaces/doubly-linked-list.js → dist/cjs/types/data-structures/linked-list/skip-linked-list.d.ts} +0 -0
  991. /package/{lib/interfaces/heap.js → dist/cjs/types/data-structures/matrix/matrix.d.ts} +0 -0
  992. /package/{lib/interfaces/navigator.d.ts → dist/cjs/types/data-structures/matrix/matrix2d.d.ts} +0 -0
  993. /package/dist/{types/data-structures → cjs/types/data-structures/matrix}/navigator.d.ts +0 -0
  994. /package/dist/{types/data-structures → cjs/types/data-structures/matrix}/navigator.js +0 -0
  995. /package/{lib/interfaces/navigator.js → dist/cjs/types/data-structures/matrix/vector2d.d.ts} +0 -0
  996. /package/{lib → dist/cjs/types}/data-structures/priority-queue/index.d.ts +0 -0
  997. /package/{lib/interfaces/priority-queue.d.ts → dist/cjs/types/data-structures/priority-queue/max-priority-queue.d.ts} +0 -0
  998. /package/{lib/interfaces/priority-queue.js → dist/cjs/types/data-structures/priority-queue/min-priority-queue.d.ts} +0 -0
  999. /package/{lib/interfaces/rb-tree.js → dist/cjs/types/data-structures/priority-queue/priority-queue.d.ts} +0 -0
  1000. /package/dist/{types/data-structures → cjs/types/data-structures/priority-queue}/priority-queue.js +0 -0
  1001. /package/{lib/interfaces/segment-tree.d.ts → dist/cjs/types/data-structures/queue/deque.d.ts} +0 -0
  1002. /package/{lib → dist/cjs/types}/data-structures/queue/index.d.ts +0 -0
  1003. /package/{lib/interfaces/segment-tree.js → dist/cjs/types/data-structures/queue/queue.d.ts} +0 -0
  1004. /package/{lib → dist/cjs/types}/data-structures/stack/index.d.ts +0 -0
  1005. /package/{lib/interfaces/singly-linked-list.js → dist/cjs/types/data-structures/stack/stack.d.ts} +0 -0
  1006. /package/{lib → dist/cjs/types}/data-structures/tree/index.d.ts +0 -0
  1007. /package/{lib/interfaces/tree-multiset.js → dist/cjs/types/data-structures/tree/tree.d.ts} +0 -0
  1008. /package/{lib → dist/cjs/types}/data-structures/trie/index.d.ts +0 -0
  1009. /package/{lib/interfaces/undirected-graph.js → dist/cjs/types/data-structures/trie/trie.d.ts} +0 -0
  1010. /package/dist/{types → cjs/types}/index.d.ts +0 -0
  1011. /package/dist/{types → cjs/types}/index.js +0 -0
  1012. /package/dist/{types → cjs/types}/utils/index.d.ts +0 -0
  1013. /package/dist/{types → cjs/types}/utils/index.js +0 -0
  1014. /package/dist/{types → cjs/types}/utils/utils.d.ts +0 -0
  1015. /package/dist/{types → cjs/types}/utils/utils.js +0 -0
  1016. /package/dist/{types → cjs/types}/utils/validate-type.d.ts +0 -0
  1017. /package/dist/{types → cjs/types}/utils/validate-type.js +0 -0
  1018. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  1019. /package/dist/{utils → cjs/utils}/index.js +0 -0
  1020. /package/{lib → dist/mjs}/data-structures/graph/index.d.ts +0 -0
  1021. /package/{lib → dist/mjs}/data-structures/hash/tree-map.d.ts +0 -0
  1022. /package/{lib → dist/mjs}/data-structures/hash/tree-set.d.ts +0 -0
  1023. /package/{lib → dist/mjs}/data-structures/heap/index.d.ts +0 -0
  1024. /package/{lib → dist/mjs}/data-structures/index.d.ts +0 -0
  1025. /package/{lib → dist/mjs}/data-structures/linked-list/index.d.ts +0 -0
  1026. /package/{lib → dist/mjs}/data-structures/matrix/index.d.ts +0 -0
  1027. /package/{lib/data-structures/priority-queue/index.js → dist/mjs/data-structures/priority-queue/index.d.ts} +0 -0
  1028. /package/{lib/data-structures/queue/index.js → dist/mjs/data-structures/queue/index.d.ts} +0 -0
  1029. /package/{lib/data-structures/stack/index.js → dist/mjs/data-structures/stack/index.d.ts} +0 -0
  1030. /package/{lib/data-structures/tree/index.js → dist/mjs/data-structures/tree/index.d.ts} +0 -0
  1031. /package/{lib/data-structures/trie/index.js → dist/mjs/data-structures/trie/index.d.ts} +0 -0
  1032. /package/{lib → dist/mjs}/index.d.ts +0 -0
  1033. /package/{lib/types/data-structures/abstract-graph.js → dist/mjs/interfaces/doubly-linked-list.d.ts} +0 -0
  1034. /package/{lib/types/data-structures/avl-tree.js → dist/mjs/interfaces/heap.d.ts} +0 -0
  1035. /package/{lib/types/data-structures/binary-tree.js → dist/mjs/interfaces/navigator.d.ts} +0 -0
  1036. /package/{lib/types/data-structures/doubly-linked-list.js → dist/mjs/interfaces/priority-queue.d.ts} +0 -0
  1037. /package/{lib/types/data-structures/hash.js → dist/mjs/interfaces/segment-tree.d.ts} +0 -0
  1038. /package/{lib/types/data-structures → dist/mjs/interfaces}/singly-linked-list.d.ts +0 -0
  1039. /package/{lib/types/data-structures/heap.js → dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.d.ts} +0 -0
  1040. /package/{lib/types/data-structures → dist/mjs/types/data-structures/binary-tree}/segment-tree.d.ts +0 -0
  1041. /package/{lib/types/data-structures → dist/mjs/types/data-structures/graph}/directed-graph.d.ts +0 -0
  1042. /package/{lib/types/data-structures → dist/mjs/types/data-structures/graph}/map-graph.d.ts +0 -0
  1043. /package/{lib/types/data-structures/map-graph.js → dist/mjs/types/data-structures/graph/undirected-graph.d.ts} +0 -0
  1044. /package/{lib/types/data-structures/navigator.js → dist/mjs/types/data-structures/hash/coordinate-map.d.ts} +0 -0
  1045. /package/{lib/types/data-structures/priority-queue.js → dist/mjs/types/data-structures/hash/coordinate-set.d.ts} +0 -0
  1046. /package/{lib/types/data-structures/segment-tree.js → dist/mjs/types/data-structures/hash/hash-map.d.ts} +0 -0
  1047. /package/{lib/types/data-structures/singly-linked-list.js → dist/mjs/types/data-structures/hash/hash-table.d.ts} +0 -0
  1048. /package/{lib/types/data-structures/hash.d.ts → dist/mjs/types/data-structures/hash/index.d.ts} +0 -0
  1049. /package/{lib/types/data-structures/tree-multiset.js → dist/mjs/types/data-structures/hash/tree-map.d.ts} +0 -0
  1050. /package/{lib/types/helpers.d.ts → dist/mjs/types/data-structures/hash/tree-set.d.ts} +0 -0
  1051. /package/{lib/types/helpers.js → dist/mjs/types/data-structures/heap/heap.d.ts} +0 -0
  1052. /package/{lib/types/utils/utils.js → dist/mjs/types/data-structures/heap/max-heap.d.ts} +0 -0
  1053. /package/{lib/types/utils/validate-type.js → dist/mjs/types/data-structures/heap/min-heap.d.ts} +0 -0
  1054. /package/{src/types/data-structures/doubly-linked-list.ts → dist/mjs/types/data-structures/linked-list/doubly-linked-list.d.ts} +0 -0
  1055. /package/{src/types/data-structures/singly-linked-list.ts → dist/mjs/types/data-structures/linked-list/singly-linked-list.d.ts} +0 -0
  1056. /package/{lib/types/data-structures → dist/mjs/types/data-structures/matrix}/navigator.d.ts +0 -0
  1057. /package/{lib → dist/mjs}/types/index.d.ts +0 -0
  1058. /package/{lib → dist/mjs}/types/utils/index.d.ts +0 -0
  1059. /package/{lib → dist/mjs}/types/utils/utils.d.ts +0 -0
  1060. /package/{lib → dist/mjs}/types/utils/validate-type.d.ts +0 -0
  1061. /package/{lib → dist/mjs}/utils/index.d.ts +0 -0
  1062. /package/src/types/data-structures/{segment-tree.ts → binary-tree/segment-tree.ts} +0 -0
  1063. /package/src/types/data-structures/{directed-graph.ts → graph/directed-graph.ts} +0 -0
  1064. /package/src/types/data-structures/{map-graph.ts → graph/map-graph.ts} +0 -0
  1065. /package/src/types/data-structures/{hash.ts → hash/index.ts} +0 -0
  1066. /package/{lib/utils/index.js → test/types/index.ts} +0 -0
@@ -1,4 +1,7 @@
1
- import {BST, BSTNode} from '../../../../src';
1
+ import {BST, BSTNode, CP, IterationType} from '../../../../src';
2
+ import {isDebugTest} from '../../../config';
3
+
4
+ const isDebug = isDebugTest;
2
5
 
3
6
  describe('BST operations test', () => {
4
7
  it('should perform various operations on a Binary Search Tree with numeric values', () => {
@@ -7,7 +10,7 @@ describe('BST operations test', () => {
7
10
  bst.add(11, 11);
8
11
  bst.add(3, 3);
9
12
  const idsAndValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
10
- bst.addMany(idsAndValues, idsAndValues);
13
+ bst.addMany(idsAndValues, idsAndValues, false);
11
14
  expect(bst.root).toBeInstanceOf(BSTNode);
12
15
 
13
16
  if (bst.root) expect(bst.root.key).toBe(11);
@@ -23,7 +26,7 @@ describe('BST operations test', () => {
23
26
  const nodeId10 = bst.get(10);
24
27
  expect(nodeId10?.key).toBe(10);
25
28
 
26
- const nodeVal9 = bst.get(9, 'val');
29
+ const nodeVal9 = bst.get(9, node => node.value);
27
30
  expect(nodeVal9?.key).toBe(9);
28
31
 
29
32
  const leftMost = bst.getLeftMost();
@@ -33,10 +36,12 @@ describe('BST operations test', () => {
33
36
  const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
34
37
  expect(minNodeBySpecificNode?.key).toBe(12);
35
38
 
36
- const subTreeSum = node15 && bst.subTreeSum(15);
39
+ let subTreeSum = 0;
40
+ node15 && bst.subTreeTraverse(node => (subTreeSum += node.key), 15);
37
41
  expect(subTreeSum).toBe(70);
38
42
 
39
- const lesserSum = bst.lesserSum(10);
43
+ let lesserSum = 0;
44
+ bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
40
45
  expect(lesserSum).toBe(45);
41
46
 
42
47
  expect(node15).toBeInstanceOf(BSTNode);
@@ -44,18 +49,19 @@ describe('BST operations test', () => {
44
49
  const node11 = bst.get(11);
45
50
  expect(node11).toBeInstanceOf(BSTNode);
46
51
 
47
- const dfsInorderNodes = bst.dfs('in', 'node');
52
+ const dfsInorderNodes = bst.dfs(node => node, 'in');
48
53
  expect(dfsInorderNodes[0].key).toBe(1);
49
54
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
50
55
 
51
56
  bst.perfectlyBalance();
52
57
  expect(bst.isPerfectlyBalanced()).toBe(true);
53
58
 
54
- const bfsNodesAfterBalanced = bst.bfs('node');
59
+ const bfsNodesAfterBalanced: BSTNode<number>[] = [];
60
+ bst.bfs(node => bfsNodesAfterBalanced.push(node));
55
61
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
56
62
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
57
63
 
58
- const removed11 = bst.remove(11);
64
+ const removed11 = bst.delete(11);
59
65
  expect(removed11).toBeInstanceOf(Array);
60
66
  expect(removed11[0]).toBeDefined();
61
67
  expect(removed11[0].deleted).toBeDefined();
@@ -66,7 +72,7 @@ describe('BST operations test', () => {
66
72
 
67
73
  expect(bst.getHeight(15)).toBe(1);
68
74
 
69
- const removed1 = bst.remove(1);
75
+ const removed1 = bst.delete(1);
70
76
  expect(removed1).toBeInstanceOf(Array);
71
77
  expect(removed1[0]).toBeDefined();
72
78
  expect(removed1[0].deleted).toBeDefined();
@@ -76,7 +82,7 @@ describe('BST operations test', () => {
76
82
 
77
83
  expect(bst.getHeight()).toBe(4);
78
84
 
79
- const removed4 = bst.remove(4);
85
+ const removed4 = bst.delete(4);
80
86
  expect(removed4).toBeInstanceOf(Array);
81
87
  expect(removed4[0]).toBeDefined();
82
88
  expect(removed4[0].deleted).toBeDefined();
@@ -84,7 +90,7 @@ describe('BST operations test', () => {
84
90
  expect(bst.isAVLBalanced()).toBe(true);
85
91
  expect(bst.getHeight()).toBe(4);
86
92
 
87
- const removed10 = bst.remove(10);
93
+ const removed10 = bst.delete(10);
88
94
  expect(removed10).toBeInstanceOf(Array);
89
95
  expect(removed10[0]).toBeDefined();
90
96
  expect(removed10[0].deleted).toBeDefined();
@@ -92,7 +98,7 @@ describe('BST operations test', () => {
92
98
  expect(bst.isAVLBalanced()).toBe(false);
93
99
  expect(bst.getHeight()).toBe(4);
94
100
 
95
- const removed15 = bst.remove(15);
101
+ const removed15 = bst.delete(15);
96
102
  expect(removed15).toBeInstanceOf(Array);
97
103
  expect(removed15[0]).toBeDefined();
98
104
  expect(removed15[0].deleted).toBeDefined();
@@ -101,7 +107,7 @@ describe('BST operations test', () => {
101
107
  expect(bst.isAVLBalanced()).toBe(true);
102
108
  expect(bst.getHeight()).toBe(3);
103
109
 
104
- const removed5 = bst.remove(5);
110
+ const removed5 = bst.delete(5);
105
111
  expect(removed5).toBeInstanceOf(Array);
106
112
  expect(removed5[0]).toBeDefined();
107
113
  expect(removed5[0].deleted).toBeDefined();
@@ -110,7 +116,7 @@ describe('BST operations test', () => {
110
116
  expect(bst.isAVLBalanced()).toBe(true);
111
117
  expect(bst.getHeight()).toBe(3);
112
118
 
113
- const removed13 = bst.remove(13);
119
+ const removed13 = bst.delete(13);
114
120
  expect(removed13).toBeInstanceOf(Array);
115
121
  expect(removed13[0]).toBeDefined();
116
122
  expect(removed13[0].deleted).toBeDefined();
@@ -118,7 +124,7 @@ describe('BST operations test', () => {
118
124
  expect(bst.isAVLBalanced()).toBe(true);
119
125
  expect(bst.getHeight()).toBe(3);
120
126
 
121
- const removed3 = bst.remove(3);
127
+ const removed3 = bst.delete(3);
122
128
  expect(removed3).toBeInstanceOf(Array);
123
129
  expect(removed3[0]).toBeDefined();
124
130
  expect(removed3[0].deleted).toBeDefined();
@@ -126,7 +132,7 @@ describe('BST operations test', () => {
126
132
  expect(bst.isAVLBalanced()).toBe(false);
127
133
  expect(bst.getHeight()).toBe(3);
128
134
 
129
- const removed8 = bst.remove(8);
135
+ const removed8 = bst.delete(8);
130
136
  expect(removed8).toBeInstanceOf(Array);
131
137
  expect(removed8[0]).toBeDefined();
132
138
  expect(removed8[0].deleted).toBeDefined();
@@ -134,16 +140,16 @@ describe('BST operations test', () => {
134
140
  expect(bst.isAVLBalanced()).toBe(true);
135
141
  expect(bst.getHeight()).toBe(3);
136
142
 
137
- const removed6 = bst.remove(6);
143
+ const removed6 = bst.delete(6);
138
144
  expect(removed6).toBeInstanceOf(Array);
139
145
  expect(removed6[0]).toBeDefined();
140
146
  expect(removed6[0].deleted).toBeDefined();
141
147
  if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
142
- expect(bst.remove(6).length).toBe(0);
148
+ expect(bst.delete(6).length).toBe(0);
143
149
  expect(bst.isAVLBalanced()).toBe(false);
144
150
  expect(bst.getHeight()).toBe(3);
145
151
 
146
- const removed7 = bst.remove(7);
152
+ const removed7 = bst.delete(7);
147
153
  expect(removed7).toBeInstanceOf(Array);
148
154
  expect(removed7[0]).toBeDefined();
149
155
  expect(removed7[0].deleted).toBeDefined();
@@ -151,7 +157,7 @@ describe('BST operations test', () => {
151
157
  expect(bst.isAVLBalanced()).toBe(false);
152
158
  expect(bst.getHeight()).toBe(3);
153
159
 
154
- const removed9 = bst.remove(9);
160
+ const removed9 = bst.delete(9);
155
161
  expect(removed9).toBeInstanceOf(Array);
156
162
  expect(removed9[0]).toBeDefined();
157
163
  expect(removed9[0].deleted).toBeDefined();
@@ -159,7 +165,7 @@ describe('BST operations test', () => {
159
165
  expect(bst.isAVLBalanced()).toBe(false);
160
166
  expect(bst.getHeight()).toBe(3);
161
167
 
162
- const removed14 = bst.remove(14);
168
+ const removed14 = bst.delete(14);
163
169
  expect(removed14).toBeInstanceOf(Array);
164
170
  expect(removed14[0]).toBeDefined();
165
171
  expect(removed14[0].deleted).toBeDefined();
@@ -169,19 +175,21 @@ describe('BST operations test', () => {
169
175
 
170
176
  expect(bst.isAVLBalanced()).toBe(false);
171
177
 
172
- const bfsIDs = bst.bfs();
178
+ const bfsIDs: number[] = [];
179
+ bst.bfs(node => bfsIDs.push(node.key));
173
180
  expect(bfsIDs[0]).toBe(2);
174
181
  expect(bfsIDs[1]).toBe(12);
175
182
  expect(bfsIDs[2]).toBe(16);
176
183
 
177
- const bfsNodes = bst.bfs('node');
184
+ const bfsNodes: BSTNode<number>[] = [];
185
+ bst.bfs(node => bfsNodes.push(node));
178
186
  expect(bfsNodes[0].key).toBe(2);
179
187
  expect(bfsNodes[1].key).toBe(12);
180
188
  expect(bfsNodes[2].key).toBe(16);
181
189
  });
182
190
 
183
191
  it('should perform various operations on a Binary Search Tree with object values', () => {
184
- const objBST = new BST<BSTNode<{key: number; keyA: number}>>();
192
+ const objBST = new BST<{key: number; keyA: number}>();
185
193
  expect(objBST).toBeInstanceOf(BST);
186
194
  objBST.add(11, {key: 11, keyA: 11});
187
195
  objBST.add(3, {key: 3, keyA: 3});
@@ -204,7 +212,8 @@ describe('BST operations test', () => {
204
212
 
205
213
  objBST.addMany(
206
214
  values.map(item => item.key),
207
- values
215
+ values,
216
+ false
208
217
  );
209
218
 
210
219
  expect(objBST.root).toBeInstanceOf(BSTNode);
@@ -217,24 +226,26 @@ describe('BST operations test', () => {
217
226
  expect(node6 && objBST.getHeight(node6)).toBe(2);
218
227
  expect(node6 && objBST.getDepth(node6)).toBe(3);
219
228
 
220
- const nodeId10 = objBST.get(10, 'key');
229
+ const nodeId10 = objBST.get(10);
221
230
  expect(nodeId10?.key).toBe(10);
222
231
 
223
- const nodeVal9 = objBST.get(9, 'key');
232
+ const nodeVal9 = objBST.get(9);
224
233
  expect(nodeVal9?.key).toBe(9);
225
234
 
226
235
  const leftMost = objBST.getLeftMost();
227
236
  expect(leftMost?.key).toBe(1);
228
237
 
229
238
  const node15 = objBST.get(15);
230
- expect(node15?.val).toEqual({key: 15, keyA: 15});
239
+ expect(node15?.value).toEqual({key: 15, keyA: 15});
231
240
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
232
241
  expect(minNodeBySpecificNode?.key).toBe(12);
233
242
 
234
- const subTreeSum = node15 && objBST.subTreeSum(node15);
243
+ let subTreeSum = 0;
244
+ node15 && objBST.subTreeTraverse(node => (subTreeSum += node.key), node15);
235
245
  expect(subTreeSum).toBe(70);
236
246
 
237
- const lesserSum = objBST.lesserSum(10);
247
+ let lesserSum = 0;
248
+ objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
238
249
  expect(lesserSum).toBe(45);
239
250
 
240
251
  expect(node15).toBeInstanceOf(BSTNode);
@@ -242,18 +253,19 @@ describe('BST operations test', () => {
242
253
  const node11 = objBST.get(11);
243
254
  expect(node11).toBeInstanceOf(BSTNode);
244
255
 
245
- const dfsInorderNodes = objBST.dfs('in', 'node');
256
+ const dfsInorderNodes = objBST.dfs(node => node, 'in');
246
257
  expect(dfsInorderNodes[0].key).toBe(1);
247
258
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
248
259
 
249
260
  objBST.perfectlyBalance();
250
261
  expect(objBST.isPerfectlyBalanced()).toBe(true);
251
262
 
252
- const bfsNodesAfterBalanced = objBST.bfs('node');
263
+ const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
264
+ objBST.bfs(node => bfsNodesAfterBalanced.push(node));
253
265
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
254
266
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
255
267
 
256
- const removed11 = objBST.remove(11);
268
+ const removed11 = objBST.delete(11);
257
269
  expect(removed11).toBeInstanceOf(Array);
258
270
  expect(removed11[0]).toBeDefined();
259
271
  expect(removed11[0].deleted).toBeDefined();
@@ -264,7 +276,7 @@ describe('BST operations test', () => {
264
276
 
265
277
  expect(node15 && objBST.getHeight(node15)).toBe(2);
266
278
 
267
- const removed1 = objBST.remove(1);
279
+ const removed1 = objBST.delete(1);
268
280
  expect(removed1).toBeInstanceOf(Array);
269
281
  expect(removed1[0]).toBeDefined();
270
282
  expect(removed1[0].deleted).toBeDefined();
@@ -274,7 +286,7 @@ describe('BST operations test', () => {
274
286
 
275
287
  expect(objBST.getHeight()).toBe(4);
276
288
 
277
- const removed4 = objBST.remove(4);
289
+ const removed4 = objBST.delete(4);
278
290
  expect(removed4).toBeInstanceOf(Array);
279
291
  expect(removed4[0]).toBeDefined();
280
292
  expect(removed4[0].deleted).toBeDefined();
@@ -282,7 +294,7 @@ describe('BST operations test', () => {
282
294
  expect(objBST.isAVLBalanced()).toBe(true);
283
295
  expect(objBST.getHeight()).toBe(4);
284
296
 
285
- const removed10 = objBST.remove(10);
297
+ const removed10 = objBST.delete(10);
286
298
  expect(removed10).toBeInstanceOf(Array);
287
299
  expect(removed10[0]).toBeDefined();
288
300
  expect(removed10[0].deleted).toBeDefined();
@@ -290,7 +302,7 @@ describe('BST operations test', () => {
290
302
  expect(objBST.isAVLBalanced()).toBe(false);
291
303
  expect(objBST.getHeight()).toBe(4);
292
304
 
293
- const removed15 = objBST.remove(15);
305
+ const removed15 = objBST.delete(15);
294
306
  expect(removed15).toBeInstanceOf(Array);
295
307
  expect(removed15[0]).toBeDefined();
296
308
  expect(removed15[0].deleted).toBeDefined();
@@ -299,7 +311,7 @@ describe('BST operations test', () => {
299
311
  expect(objBST.isAVLBalanced()).toBe(true);
300
312
  expect(objBST.getHeight()).toBe(3);
301
313
 
302
- const removed5 = objBST.remove(5);
314
+ const removed5 = objBST.delete(5);
303
315
  expect(removed5).toBeInstanceOf(Array);
304
316
  expect(removed5[0]).toBeDefined();
305
317
  expect(removed5[0].deleted).toBeDefined();
@@ -308,7 +320,7 @@ describe('BST operations test', () => {
308
320
  expect(objBST.isAVLBalanced()).toBe(true);
309
321
  expect(objBST.getHeight()).toBe(3);
310
322
 
311
- const removed13 = objBST.remove(13);
323
+ const removed13 = objBST.delete(13);
312
324
  expect(removed13).toBeInstanceOf(Array);
313
325
  expect(removed13[0]).toBeDefined();
314
326
  expect(removed13[0].deleted).toBeDefined();
@@ -316,7 +328,7 @@ describe('BST operations test', () => {
316
328
  expect(objBST.isAVLBalanced()).toBe(true);
317
329
  expect(objBST.getHeight()).toBe(3);
318
330
 
319
- const removed3 = objBST.remove(3);
331
+ const removed3 = objBST.delete(3);
320
332
  expect(removed3).toBeInstanceOf(Array);
321
333
  expect(removed3[0]).toBeDefined();
322
334
  expect(removed3[0].deleted).toBeDefined();
@@ -324,7 +336,7 @@ describe('BST operations test', () => {
324
336
  expect(objBST.isAVLBalanced()).toBe(false);
325
337
  expect(objBST.getHeight()).toBe(3);
326
338
 
327
- const removed8 = objBST.remove(8);
339
+ const removed8 = objBST.delete(8);
328
340
  expect(removed8).toBeInstanceOf(Array);
329
341
  expect(removed8[0]).toBeDefined();
330
342
  expect(removed8[0].deleted).toBeDefined();
@@ -332,16 +344,16 @@ describe('BST operations test', () => {
332
344
  expect(objBST.isAVLBalanced()).toBe(true);
333
345
  expect(objBST.getHeight()).toBe(3);
334
346
 
335
- const removed6 = objBST.remove(6);
347
+ const removed6 = objBST.delete(6);
336
348
  expect(removed6).toBeInstanceOf(Array);
337
349
  expect(removed6[0]).toBeDefined();
338
350
  expect(removed6[0].deleted).toBeDefined();
339
351
  if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
340
- expect(objBST.remove(6).length).toBe(0);
352
+ expect(objBST.delete(6).length).toBe(0);
341
353
  expect(objBST.isAVLBalanced()).toBe(false);
342
354
  expect(objBST.getHeight()).toBe(3);
343
355
 
344
- const removed7 = objBST.remove(7);
356
+ const removed7 = objBST.delete(7);
345
357
  expect(removed7).toBeInstanceOf(Array);
346
358
  expect(removed7[0]).toBeDefined();
347
359
  expect(removed7[0].deleted).toBeDefined();
@@ -349,7 +361,7 @@ describe('BST operations test', () => {
349
361
  expect(objBST.isAVLBalanced()).toBe(false);
350
362
  expect(objBST.getHeight()).toBe(3);
351
363
 
352
- const removed9 = objBST.remove(9);
364
+ const removed9 = objBST.delete(9);
353
365
  expect(removed9).toBeInstanceOf(Array);
354
366
  expect(removed9[0]).toBeDefined();
355
367
  expect(removed9[0].deleted).toBeDefined();
@@ -357,7 +369,7 @@ describe('BST operations test', () => {
357
369
  expect(objBST.isAVLBalanced()).toBe(false);
358
370
  expect(objBST.getHeight()).toBe(3);
359
371
 
360
- const removed14 = objBST.remove(14);
372
+ const removed14 = objBST.delete(14);
361
373
  expect(removed14).toBeInstanceOf(Array);
362
374
  expect(removed14[0]).toBeDefined();
363
375
  expect(removed14[0].deleted).toBeDefined();
@@ -367,14 +379,460 @@ describe('BST operations test', () => {
367
379
 
368
380
  expect(objBST.isAVLBalanced()).toBe(false);
369
381
 
370
- const bfsIDs = objBST.bfs();
382
+ const bfsIDs: number[] = [];
383
+ objBST.bfs(node => bfsIDs.push(node.key));
371
384
  expect(bfsIDs[0]).toBe(2);
372
385
  expect(bfsIDs[1]).toBe(12);
373
386
  expect(bfsIDs[2]).toBe(16);
374
387
 
375
- const bfsNodes = objBST.bfs('node');
388
+ const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
389
+ objBST.bfs(node => bfsNodes.push(node));
376
390
  expect(bfsNodes[0].key).toBe(2);
377
391
  expect(bfsNodes[1].key).toBe(12);
378
392
  expect(bfsNodes[2].key).toBe(16);
379
393
  });
380
394
  });
395
+
396
+ describe('BST operations test recursively', () => {
397
+ it('should perform various operations on a Binary Search Tree with numeric values', () => {
398
+ const bst = new BST({iterationType: IterationType.RECURSIVE});
399
+ expect(bst).toBeInstanceOf(BST);
400
+ bst.add(11, 11);
401
+ bst.add(3, 3);
402
+ const idsAndValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
403
+ bst.addMany(idsAndValues, idsAndValues, false);
404
+ expect(bst.root).toBeInstanceOf(BSTNode);
405
+
406
+ if (bst.root) expect(bst.root.key).toBe(11);
407
+
408
+ expect(bst.size).toBe(16);
409
+
410
+ expect(bst.has(6)).toBe(true);
411
+
412
+ const node6 = bst.get(6);
413
+ expect(node6 && bst.getHeight(6)).toBe(2);
414
+ expect(node6 && bst.getDepth(6)).toBe(3);
415
+
416
+ const nodeId10 = bst.get(10);
417
+ expect(nodeId10?.key).toBe(10);
418
+
419
+ const nodeVal9 = bst.get(9, node => node.value);
420
+ expect(nodeVal9?.key).toBe(9);
421
+
422
+ const leftMost = bst.getLeftMost();
423
+ expect(leftMost?.key).toBe(1);
424
+
425
+ const node15 = bst.get(15);
426
+ const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
427
+ expect(minNodeBySpecificNode?.key).toBe(12);
428
+
429
+ let subTreeSum = 0;
430
+ node15 && bst.subTreeTraverse(node => (subTreeSum += node.key), 15);
431
+ expect(subTreeSum).toBe(70);
432
+
433
+ let lesserSum = 0;
434
+ bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
435
+ expect(lesserSum).toBe(45);
436
+
437
+ expect(node15).toBeInstanceOf(BSTNode);
438
+
439
+ const node11 = bst.get(11);
440
+ expect(node11).toBeInstanceOf(BSTNode);
441
+
442
+ const dfsInorderNodes = bst.dfs(node => node, 'in');
443
+ expect(dfsInorderNodes[0].key).toBe(1);
444
+ expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
445
+
446
+ bst.perfectlyBalance();
447
+ expect(bst.isPerfectlyBalanced()).toBe(true);
448
+
449
+ const bfsNodesAfterBalanced: BSTNode<number>[] = [];
450
+ bst.bfs(node => bfsNodesAfterBalanced.push(node));
451
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
452
+ expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
453
+
454
+ const removed11 = bst.delete(11);
455
+ expect(removed11).toBeInstanceOf(Array);
456
+ expect(removed11[0]).toBeDefined();
457
+ expect(removed11[0].deleted).toBeDefined();
458
+
459
+ if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
460
+
461
+ expect(bst.isAVLBalanced()).toBe(true);
462
+
463
+ expect(bst.getHeight(15)).toBe(1);
464
+
465
+ const removed1 = bst.delete(1);
466
+ expect(removed1).toBeInstanceOf(Array);
467
+ expect(removed1[0]).toBeDefined();
468
+ expect(removed1[0].deleted).toBeDefined();
469
+ if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
470
+
471
+ expect(bst.isAVLBalanced()).toBe(true);
472
+
473
+ expect(bst.getHeight()).toBe(4);
474
+
475
+ const removed4 = bst.delete(4);
476
+ expect(removed4).toBeInstanceOf(Array);
477
+ expect(removed4[0]).toBeDefined();
478
+ expect(removed4[0].deleted).toBeDefined();
479
+ if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
480
+ expect(bst.isAVLBalanced()).toBe(true);
481
+ expect(bst.getHeight()).toBe(4);
482
+
483
+ const removed10 = bst.delete(10);
484
+ expect(removed10).toBeInstanceOf(Array);
485
+ expect(removed10[0]).toBeDefined();
486
+ expect(removed10[0].deleted).toBeDefined();
487
+ if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
488
+ expect(bst.isAVLBalanced()).toBe(false);
489
+ expect(bst.getHeight()).toBe(4);
490
+
491
+ const removed15 = bst.delete(15);
492
+ expect(removed15).toBeInstanceOf(Array);
493
+ expect(removed15[0]).toBeDefined();
494
+ expect(removed15[0].deleted).toBeDefined();
495
+ if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
496
+
497
+ expect(bst.isAVLBalanced()).toBe(true);
498
+ expect(bst.getHeight()).toBe(3);
499
+
500
+ const removed5 = bst.delete(5);
501
+ expect(removed5).toBeInstanceOf(Array);
502
+ expect(removed5[0]).toBeDefined();
503
+ expect(removed5[0].deleted).toBeDefined();
504
+ if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
505
+
506
+ expect(bst.isAVLBalanced()).toBe(true);
507
+ expect(bst.getHeight()).toBe(3);
508
+
509
+ const removed13 = bst.delete(13);
510
+ expect(removed13).toBeInstanceOf(Array);
511
+ expect(removed13[0]).toBeDefined();
512
+ expect(removed13[0].deleted).toBeDefined();
513
+ if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
514
+ expect(bst.isAVLBalanced()).toBe(true);
515
+ expect(bst.getHeight()).toBe(3);
516
+
517
+ const removed3 = bst.delete(3);
518
+ expect(removed3).toBeInstanceOf(Array);
519
+ expect(removed3[0]).toBeDefined();
520
+ expect(removed3[0].deleted).toBeDefined();
521
+ if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
522
+ expect(bst.isAVLBalanced()).toBe(false);
523
+ expect(bst.getHeight()).toBe(3);
524
+
525
+ const removed8 = bst.delete(8);
526
+ expect(removed8).toBeInstanceOf(Array);
527
+ expect(removed8[0]).toBeDefined();
528
+ expect(removed8[0].deleted).toBeDefined();
529
+ if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
530
+ expect(bst.isAVLBalanced()).toBe(true);
531
+ expect(bst.getHeight()).toBe(3);
532
+
533
+ const removed6 = bst.delete(6);
534
+ expect(removed6).toBeInstanceOf(Array);
535
+ expect(removed6[0]).toBeDefined();
536
+ expect(removed6[0].deleted).toBeDefined();
537
+ if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
538
+ expect(bst.delete(6).length).toBe(0);
539
+ expect(bst.isAVLBalanced()).toBe(false);
540
+ expect(bst.getHeight()).toBe(3);
541
+
542
+ const removed7 = bst.delete(7);
543
+ expect(removed7).toBeInstanceOf(Array);
544
+ expect(removed7[0]).toBeDefined();
545
+ expect(removed7[0].deleted).toBeDefined();
546
+ if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
547
+ expect(bst.isAVLBalanced()).toBe(false);
548
+ expect(bst.getHeight()).toBe(3);
549
+
550
+ const removed9 = bst.delete(9);
551
+ expect(removed9).toBeInstanceOf(Array);
552
+ expect(removed9[0]).toBeDefined();
553
+ expect(removed9[0].deleted).toBeDefined();
554
+ if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
555
+ expect(bst.isAVLBalanced()).toBe(false);
556
+ expect(bst.getHeight()).toBe(3);
557
+
558
+ const removed14 = bst.delete(14);
559
+ expect(removed14).toBeInstanceOf(Array);
560
+ expect(removed14[0]).toBeDefined();
561
+ expect(removed14[0].deleted).toBeDefined();
562
+ if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
563
+ expect(bst.isAVLBalanced()).toBe(false);
564
+ expect(bst.getHeight()).toBe(2);
565
+
566
+ expect(bst.isAVLBalanced()).toBe(false);
567
+
568
+ const bfsIDs: number[] = [];
569
+ bst.bfs(node => bfsIDs.push(node.key));
570
+ expect(bfsIDs[0]).toBe(2);
571
+ expect(bfsIDs[1]).toBe(12);
572
+ expect(bfsIDs[2]).toBe(16);
573
+
574
+ const bfsNodes: BSTNode<number>[] = [];
575
+ bst.bfs(node => bfsNodes.push(node));
576
+ expect(bfsNodes[0].key).toBe(2);
577
+ expect(bfsNodes[1].key).toBe(12);
578
+ expect(bfsNodes[2].key).toBe(16);
579
+ });
580
+
581
+ it('should perform various operations on a Binary Search Tree with object values', () => {
582
+ const objBST = new BST<{key: number; keyA: number}>();
583
+ expect(objBST).toBeInstanceOf(BST);
584
+ objBST.add(11, {key: 11, keyA: 11});
585
+ objBST.add(3, {key: 3, keyA: 3});
586
+ const values = [
587
+ {key: 15, keyA: 15},
588
+ {key: 1, keyA: 1},
589
+ {key: 8, keyA: 8},
590
+ {key: 13, keyA: 13},
591
+ {key: 16, keyA: 16},
592
+ {key: 2, keyA: 2},
593
+ {key: 6, keyA: 6},
594
+ {key: 9, keyA: 9},
595
+ {key: 12, keyA: 12},
596
+ {key: 14, keyA: 14},
597
+ {key: 4, keyA: 4},
598
+ {key: 7, keyA: 7},
599
+ {key: 10, keyA: 10},
600
+ {key: 5, keyA: 5}
601
+ ];
602
+
603
+ objBST.addMany(
604
+ values.map(item => item.key),
605
+ values,
606
+ false
607
+ );
608
+
609
+ expect(objBST.root).toBeInstanceOf(BSTNode);
610
+
611
+ if (objBST.root) expect(objBST.root.key).toBe(11);
612
+
613
+ expect(objBST.has(6)).toBe(true);
614
+
615
+ const node6 = objBST.get(6);
616
+ expect(node6 && objBST.getHeight(node6)).toBe(2);
617
+ expect(node6 && objBST.getDepth(node6)).toBe(3);
618
+
619
+ const nodeId10 = objBST.get(10);
620
+ expect(nodeId10?.key).toBe(10);
621
+
622
+ const nodeVal9 = objBST.get(9);
623
+ expect(nodeVal9?.key).toBe(9);
624
+
625
+ const leftMost = objBST.getLeftMost();
626
+ expect(leftMost?.key).toBe(1);
627
+
628
+ const node15 = objBST.get(15);
629
+ expect(node15?.value).toEqual({key: 15, keyA: 15});
630
+ const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
631
+ expect(minNodeBySpecificNode?.key).toBe(12);
632
+
633
+ let subTreeSum = 0;
634
+ node15 && objBST.subTreeTraverse(node => (subTreeSum += node.key), node15);
635
+ expect(subTreeSum).toBe(70);
636
+
637
+ let lesserSum = 0;
638
+ objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
639
+ expect(lesserSum).toBe(45);
640
+
641
+ expect(node15).toBeInstanceOf(BSTNode);
642
+
643
+ const node11 = objBST.get(11);
644
+ expect(node11).toBeInstanceOf(BSTNode);
645
+
646
+ const dfsInorderNodes = objBST.dfs(node => node, 'in');
647
+ expect(dfsInorderNodes[0].key).toBe(1);
648
+ expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
649
+
650
+ objBST.perfectlyBalance();
651
+ expect(objBST.isPerfectlyBalanced()).toBe(true);
652
+
653
+ const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
654
+ objBST.bfs(node => bfsNodesAfterBalanced.push(node));
655
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
656
+ expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
657
+
658
+ const removed11 = objBST.delete(11);
659
+ expect(removed11).toBeInstanceOf(Array);
660
+ expect(removed11[0]).toBeDefined();
661
+ expect(removed11[0].deleted).toBeDefined();
662
+
663
+ if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
664
+
665
+ expect(objBST.isAVLBalanced()).toBe(true);
666
+
667
+ expect(node15 && objBST.getHeight(node15)).toBe(2);
668
+
669
+ const removed1 = objBST.delete(1);
670
+ expect(removed1).toBeInstanceOf(Array);
671
+ expect(removed1[0]).toBeDefined();
672
+ expect(removed1[0].deleted).toBeDefined();
673
+ if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
674
+
675
+ expect(objBST.isAVLBalanced()).toBe(true);
676
+
677
+ expect(objBST.getHeight()).toBe(4);
678
+
679
+ const removed4 = objBST.delete(4);
680
+ expect(removed4).toBeInstanceOf(Array);
681
+ expect(removed4[0]).toBeDefined();
682
+ expect(removed4[0].deleted).toBeDefined();
683
+ if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
684
+ expect(objBST.isAVLBalanced()).toBe(true);
685
+ expect(objBST.getHeight()).toBe(4);
686
+
687
+ const removed10 = objBST.delete(10);
688
+ expect(removed10).toBeInstanceOf(Array);
689
+ expect(removed10[0]).toBeDefined();
690
+ expect(removed10[0].deleted).toBeDefined();
691
+ if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
692
+ expect(objBST.isAVLBalanced()).toBe(false);
693
+ expect(objBST.getHeight()).toBe(4);
694
+
695
+ const removed15 = objBST.delete(15);
696
+ expect(removed15).toBeInstanceOf(Array);
697
+ expect(removed15[0]).toBeDefined();
698
+ expect(removed15[0].deleted).toBeDefined();
699
+ if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
700
+
701
+ expect(objBST.isAVLBalanced()).toBe(true);
702
+ expect(objBST.getHeight()).toBe(3);
703
+
704
+ const removed5 = objBST.delete(5);
705
+ expect(removed5).toBeInstanceOf(Array);
706
+ expect(removed5[0]).toBeDefined();
707
+ expect(removed5[0].deleted).toBeDefined();
708
+ if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
709
+
710
+ expect(objBST.isAVLBalanced()).toBe(true);
711
+ expect(objBST.getHeight()).toBe(3);
712
+
713
+ const removed13 = objBST.delete(13);
714
+ expect(removed13).toBeInstanceOf(Array);
715
+ expect(removed13[0]).toBeDefined();
716
+ expect(removed13[0].deleted).toBeDefined();
717
+ if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
718
+ expect(objBST.isAVLBalanced()).toBe(true);
719
+ expect(objBST.getHeight()).toBe(3);
720
+
721
+ const removed3 = objBST.delete(3);
722
+ expect(removed3).toBeInstanceOf(Array);
723
+ expect(removed3[0]).toBeDefined();
724
+ expect(removed3[0].deleted).toBeDefined();
725
+ if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
726
+ expect(objBST.isAVLBalanced()).toBe(false);
727
+ expect(objBST.getHeight()).toBe(3);
728
+
729
+ const removed8 = objBST.delete(8);
730
+ expect(removed8).toBeInstanceOf(Array);
731
+ expect(removed8[0]).toBeDefined();
732
+ expect(removed8[0].deleted).toBeDefined();
733
+ if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
734
+ expect(objBST.isAVLBalanced()).toBe(true);
735
+ expect(objBST.getHeight()).toBe(3);
736
+
737
+ const removed6 = objBST.delete(6);
738
+ expect(removed6).toBeInstanceOf(Array);
739
+ expect(removed6[0]).toBeDefined();
740
+ expect(removed6[0].deleted).toBeDefined();
741
+ if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
742
+ expect(objBST.delete(6).length).toBe(0);
743
+ expect(objBST.isAVLBalanced()).toBe(false);
744
+ expect(objBST.getHeight()).toBe(3);
745
+
746
+ const removed7 = objBST.delete(7);
747
+ expect(removed7).toBeInstanceOf(Array);
748
+ expect(removed7[0]).toBeDefined();
749
+ expect(removed7[0].deleted).toBeDefined();
750
+ if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
751
+ expect(objBST.isAVLBalanced()).toBe(false);
752
+ expect(objBST.getHeight()).toBe(3);
753
+
754
+ const removed9 = objBST.delete(9);
755
+ expect(removed9).toBeInstanceOf(Array);
756
+ expect(removed9[0]).toBeDefined();
757
+ expect(removed9[0].deleted).toBeDefined();
758
+ if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
759
+ expect(objBST.isAVLBalanced()).toBe(false);
760
+ expect(objBST.getHeight()).toBe(3);
761
+
762
+ const removed14 = objBST.delete(14);
763
+ expect(removed14).toBeInstanceOf(Array);
764
+ expect(removed14[0]).toBeDefined();
765
+ expect(removed14[0].deleted).toBeDefined();
766
+ if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
767
+ expect(objBST.isAVLBalanced()).toBe(false);
768
+ expect(objBST.getHeight()).toBe(2);
769
+
770
+ expect(objBST.isAVLBalanced()).toBe(false);
771
+
772
+ const bfsIDs: number[] = [];
773
+ objBST.bfs(node => bfsIDs.push(node.key));
774
+ expect(bfsIDs[0]).toBe(2);
775
+ expect(bfsIDs[1]).toBe(12);
776
+ expect(bfsIDs[2]).toBe(16);
777
+
778
+ const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
779
+ objBST.bfs(node => bfsNodes.push(node));
780
+ expect(bfsNodes[0].key).toBe(2);
781
+ expect(bfsNodes[1].key).toBe(12);
782
+ expect(bfsNodes[2].key).toBe(16);
783
+ });
784
+ });
785
+
786
+ describe('BST Performance test', function () {
787
+ const bst = new BST<BSTNode<number>>();
788
+ const inputSize = 10000; // Adjust input sizes as needed
789
+
790
+ beforeEach(() => {
791
+ bst.clear();
792
+ });
793
+
794
+ it(`Observe the time consumption of BST.dfs be good`, function () {
795
+ const startDFS = performance.now();
796
+ const dfs = bst.dfs(node => node);
797
+ isDebug && console.log('---bfs', performance.now() - startDFS, dfs.length);
798
+ });
799
+
800
+ it('Should the time consumption of lesserOrGreaterTraverse fitting O(n log n)', function () {
801
+ const nodes: number[] = [];
802
+ for (let i = 0; i < inputSize; i++) {
803
+ nodes.push(i);
804
+ }
805
+ const start = performance.now();
806
+ bst.addMany(nodes);
807
+ isDebug && console.log('---add', performance.now() - start);
808
+ const startL = performance.now();
809
+ bst.lesserOrGreaterTraverse(
810
+ node => {
811
+ node.key - 1;
812
+ },
813
+ CP.lt,
814
+ inputSize / 2
815
+ );
816
+ isDebug && console.log('---lesserOrGreaterTraverse', performance.now() - startL);
817
+ });
818
+
819
+ it('Should the time consumption of listLevels fitting well', function () {
820
+ const nodes: number[] = [];
821
+ for (let i = 0; i < inputSize; i++) {
822
+ nodes.push(i);
823
+ }
824
+ const start = performance.now();
825
+ bst.addMany(nodes);
826
+ isDebug && console.log('---add', performance.now() - start);
827
+ const startL = performance.now();
828
+ const arr: number[][] = bst.listLevels(node => node.key);
829
+ isDebug && console.log('---listLevels', arr);
830
+ isDebug && console.log('---listLevels', performance.now() - startL);
831
+ });
832
+
833
+ it('should the lastKey of a BST to be the largest key', function () {
834
+ const bst = new BST();
835
+ bst.addMany([9, 8, 7, 3, 1, 2, 5, 4, 6], undefined, false);
836
+ expect(bst.lastKey()).toBe(9);
837
+ });
838
+ });