data-structure-typed 1.54.0 → 1.54.2

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 (498) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +1 -0
  3. package/benchmark/report.html +1 -28
  4. package/benchmark/report.json +17 -326
  5. package/dist/{mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts → cjs/data-structures/binary-tree/avl-tree-counter.d.ts} +54 -47
  6. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +408 -0
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -0
  8. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +71 -177
  9. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +135 -340
  10. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +102 -57
  12. package/dist/cjs/data-structures/binary-tree/avl-tree.js +110 -47
  13. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.d.ts +3 -0
  15. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +3 -0
  16. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +240 -190
  18. package/dist/cjs/data-structures/binary-tree/binary-tree.js +269 -240
  19. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  20. package/dist/cjs/data-structures/binary-tree/bst.d.ts +145 -112
  21. package/dist/cjs/data-structures/binary-tree/bst.js +180 -129
  22. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  23. package/dist/cjs/data-structures/binary-tree/index.d.ts +2 -0
  24. package/dist/cjs/data-structures/binary-tree/index.js +2 -0
  25. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -1
  26. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +100 -82
  27. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +115 -79
  28. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  29. package/dist/{mjs/data-structures/binary-tree/tree-multi-map.d.ts → cjs/data-structures/binary-tree/tree-counter.d.ts} +74 -64
  30. package/dist/cjs/data-structures/binary-tree/tree-counter.js +445 -0
  31. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -0
  32. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +78 -174
  33. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +142 -377
  34. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  35. package/dist/cjs/data-structures/graph/directed-graph.d.ts +3 -0
  36. package/dist/cjs/data-structures/graph/directed-graph.js +3 -0
  37. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  38. package/dist/cjs/data-structures/graph/map-graph.d.ts +3 -0
  39. package/dist/cjs/data-structures/graph/map-graph.js +3 -0
  40. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  41. package/dist/cjs/data-structures/graph/undirected-graph.d.ts +3 -0
  42. package/dist/cjs/data-structures/graph/undirected-graph.js +3 -0
  43. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  44. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +3 -0
  45. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +3 -0
  46. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  47. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +3 -0
  48. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +3 -0
  49. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
  50. package/dist/cjs/data-structures/matrix/matrix.d.ts +3 -0
  51. package/dist/cjs/data-structures/matrix/matrix.js +3 -0
  52. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  53. package/dist/cjs/data-structures/matrix/navigator.d.ts +3 -0
  54. package/dist/cjs/data-structures/matrix/navigator.js +3 -0
  55. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -1
  56. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +3 -0
  57. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +3 -0
  58. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  59. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +3 -0
  60. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +3 -0
  61. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  62. package/dist/cjs/data-structures/trie/trie.d.ts +0 -4
  63. package/dist/cjs/data-structures/trie/trie.js +0 -4
  64. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  65. package/dist/cjs/interfaces/binary-tree.d.ts +8 -8
  66. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.d.ts +2 -0
  67. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js +3 -0
  68. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js.map +1 -0
  69. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -4
  70. package/dist/cjs/types/data-structures/binary-tree/avl-tree.d.ts +0 -3
  71. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +0 -3
  72. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -3
  73. package/dist/cjs/types/data-structures/binary-tree/index.d.ts +3 -1
  74. package/dist/cjs/types/data-structures/binary-tree/index.js +3 -1
  75. package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -1
  76. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.d.ts +3 -0
  77. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js +3 -0
  78. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js.map +1 -0
  79. package/dist/cjs/types/data-structures/binary-tree/tree-counter.d.ts +2 -0
  80. package/dist/cjs/types/data-structures/binary-tree/{rb-tree.js → tree-counter.js} +1 -1
  81. package/dist/cjs/types/data-structures/binary-tree/tree-counter.js.map +1 -0
  82. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -5
  83. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +213 -0
  84. package/dist/{mjs/data-structures/binary-tree/avl-tree-multi-map.js → esm/data-structures/binary-tree/avl-tree-counter.js} +73 -60
  85. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -0
  86. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +100 -0
  87. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +191 -0
  88. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -0
  89. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +234 -0
  90. package/dist/{mjs → esm}/data-structures/binary-tree/avl-tree.js +110 -47
  91. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -0
  92. package/dist/{mjs → esm}/data-structures/binary-tree/binary-indexed-tree.d.ts +3 -0
  93. package/dist/{mjs → esm}/data-structures/binary-tree/binary-indexed-tree.js +3 -0
  94. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  95. package/dist/{mjs → esm}/data-structures/binary-tree/binary-tree.d.ts +240 -190
  96. package/dist/{mjs → esm}/data-structures/binary-tree/binary-tree.js +272 -245
  97. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -0
  98. package/dist/{mjs → esm}/data-structures/binary-tree/bst.d.ts +145 -112
  99. package/dist/{mjs → esm}/data-structures/binary-tree/bst.js +201 -155
  100. package/dist/esm/data-structures/binary-tree/bst.js.map +1 -0
  101. package/dist/{mjs → esm}/data-structures/binary-tree/index.d.ts +2 -0
  102. package/dist/{mjs/types/data-structures/binary-tree/index.d.ts → esm/data-structures/binary-tree/index.js} +6 -2
  103. package/dist/{mjs → esm}/data-structures/binary-tree/index.js.map +1 -1
  104. package/dist/{mjs → esm}/data-structures/binary-tree/red-black-tree.d.ts +100 -82
  105. package/dist/{mjs → esm}/data-structures/binary-tree/red-black-tree.js +115 -79
  106. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -0
  107. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +212 -0
  108. package/dist/{mjs/data-structures/binary-tree/tree-multi-map.js → esm/data-structures/binary-tree/tree-counter.js} +111 -96
  109. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -0
  110. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +106 -0
  111. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +196 -0
  112. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -0
  113. package/dist/{mjs → esm}/data-structures/graph/directed-graph.d.ts +3 -0
  114. package/dist/{mjs → esm}/data-structures/graph/directed-graph.js +3 -0
  115. package/dist/esm/data-structures/graph/directed-graph.js.map +1 -0
  116. package/dist/{mjs → esm}/data-structures/graph/map-graph.d.ts +3 -0
  117. package/dist/{mjs → esm}/data-structures/graph/map-graph.js +3 -0
  118. package/dist/esm/data-structures/graph/map-graph.js.map +1 -0
  119. package/dist/{mjs → esm}/data-structures/graph/undirected-graph.d.ts +3 -0
  120. package/dist/{mjs → esm}/data-structures/graph/undirected-graph.js +3 -0
  121. package/dist/esm/data-structures/graph/undirected-graph.js.map +1 -0
  122. package/dist/{mjs → esm}/data-structures/linked-list/singly-linked-list.d.ts +3 -0
  123. package/dist/{mjs → esm}/data-structures/linked-list/singly-linked-list.js +3 -0
  124. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -0
  125. package/dist/{mjs → esm}/data-structures/linked-list/skip-linked-list.d.ts +3 -0
  126. package/dist/{mjs → esm}/data-structures/linked-list/skip-linked-list.js +3 -0
  127. package/dist/esm/data-structures/linked-list/skip-linked-list.js.map +1 -0
  128. package/dist/{mjs → esm}/data-structures/matrix/matrix.d.ts +3 -0
  129. package/dist/{mjs → esm}/data-structures/matrix/matrix.js +3 -0
  130. package/dist/esm/data-structures/matrix/matrix.js.map +1 -0
  131. package/dist/{mjs → esm}/data-structures/matrix/navigator.d.ts +3 -0
  132. package/dist/{mjs → esm}/data-structures/matrix/navigator.js +3 -0
  133. package/dist/esm/data-structures/matrix/navigator.js.map +1 -0
  134. package/dist/{mjs → esm}/data-structures/priority-queue/max-priority-queue.d.ts +3 -0
  135. package/dist/{mjs → esm}/data-structures/priority-queue/max-priority-queue.js +3 -0
  136. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  137. package/dist/{mjs → esm}/data-structures/priority-queue/min-priority-queue.d.ts +3 -0
  138. package/dist/{mjs → esm}/data-structures/priority-queue/min-priority-queue.js +3 -0
  139. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  140. package/dist/{mjs → esm}/data-structures/trie/trie.d.ts +0 -4
  141. package/dist/{mjs → esm}/data-structures/trie/trie.js +0 -4
  142. package/dist/esm/data-structures/trie/trie.js.map +1 -0
  143. package/dist/esm/interfaces/binary-tree.d.ts +9 -0
  144. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.d.ts +2 -0
  145. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js +2 -0
  146. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js.map +1 -0
  147. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -0
  148. package/dist/esm/types/data-structures/binary-tree/avl-tree.d.ts +2 -0
  149. package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-tree.d.ts +0 -3
  150. package/dist/{mjs → esm}/types/data-structures/binary-tree/bst.d.ts +3 -3
  151. package/dist/{mjs/data-structures/binary-tree/index.js → esm/types/data-structures/binary-tree/index.d.ts} +4 -4
  152. package/dist/{mjs → esm}/types/data-structures/binary-tree/index.js +3 -1
  153. package/dist/{mjs → esm}/types/data-structures/binary-tree/index.js.map +1 -1
  154. package/dist/esm/types/data-structures/binary-tree/red-black-tree.d.ts +3 -0
  155. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js +2 -0
  156. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js.map +1 -0
  157. package/dist/esm/types/data-structures/binary-tree/tree-counter.d.ts +2 -0
  158. package/dist/esm/types/data-structures/binary-tree/tree-counter.js +2 -0
  159. package/dist/esm/types/data-structures/binary-tree/tree-counter.js.map +1 -0
  160. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -0
  161. package/dist/umd/data-structure-typed.js +1464 -895
  162. package/dist/umd/data-structure-typed.min.js +5 -5
  163. package/dist/umd/data-structure-typed.min.js.map +1 -1
  164. package/package.json +14 -19
  165. package/src/data-structures/binary-tree/avl-tree-counter.ts +463 -0
  166. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +155 -393
  167. package/src/data-structures/binary-tree/avl-tree.ts +144 -93
  168. package/src/data-structures/binary-tree/binary-indexed-tree.ts +3 -0
  169. package/src/data-structures/binary-tree/binary-tree.ts +433 -405
  170. package/src/data-structures/binary-tree/bst.ts +261 -239
  171. package/src/data-structures/binary-tree/index.ts +2 -0
  172. package/src/data-structures/binary-tree/red-black-tree.ts +163 -134
  173. package/src/data-structures/binary-tree/tree-counter.ts +504 -0
  174. package/src/data-structures/binary-tree/tree-multi-map.ts +161 -429
  175. package/src/data-structures/graph/directed-graph.ts +3 -0
  176. package/src/data-structures/graph/map-graph.ts +3 -0
  177. package/src/data-structures/graph/undirected-graph.ts +3 -0
  178. package/src/data-structures/linked-list/singly-linked-list.ts +3 -0
  179. package/src/data-structures/linked-list/skip-linked-list.ts +3 -0
  180. package/src/data-structures/matrix/matrix.ts +3 -0
  181. package/src/data-structures/matrix/navigator.ts +3 -0
  182. package/src/data-structures/priority-queue/max-priority-queue.ts +3 -0
  183. package/src/data-structures/priority-queue/min-priority-queue.ts +3 -0
  184. package/src/data-structures/trie/trie.ts +0 -4
  185. package/src/interfaces/binary-tree.ts +10 -24
  186. package/src/types/data-structures/binary-tree/avl-tree-counter.ts +3 -0
  187. package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +1 -6
  188. package/src/types/data-structures/binary-tree/avl-tree.ts +0 -5
  189. package/src/types/data-structures/binary-tree/binary-tree.ts +0 -5
  190. package/src/types/data-structures/binary-tree/bst.ts +5 -5
  191. package/src/types/data-structures/binary-tree/index.ts +3 -1
  192. package/src/types/data-structures/binary-tree/red-black-tree.ts +5 -0
  193. package/src/types/data-structures/binary-tree/tree-counter.ts +3 -0
  194. package/src/types/data-structures/binary-tree/tree-multi-map.ts +2 -7
  195. package/test/integration/all-in-one.test.ts +1 -1
  196. package/test/integration/avl-tree.test.ts +1 -1
  197. package/test/integration/bst.test.ts +2 -2
  198. package/test/integration/compile.js +144 -0
  199. package/test/integration/compile.mjs +135 -0
  200. package/test/integration/compile.ts +171 -0
  201. package/test/integration/index.html +48 -48
  202. package/test/performance/data-structures/binary-tree/avl-tree.test.js +45 -0
  203. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +4 -4
  204. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +5 -4
  205. package/test/performance/data-structures/comparison/comparison.test.ts +2 -2
  206. package/test/performance/reportor.js +249 -0
  207. package/test/performance/reportor.ts +5 -3
  208. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +877 -0
  209. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +459 -761
  210. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +223 -223
  211. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +474 -492
  212. package/test/unit/data-structures/binary-tree/bst.test.ts +1 -1
  213. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -3
  214. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +87 -90
  215. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +975 -0
  216. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +729 -857
  217. package/test/unit/data-structures/hash/hash-map.test.ts +1 -1
  218. package/{tsconfig-mjs.json → tsconfig-esm.json} +1 -1
  219. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +0 -6
  220. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +0 -1
  221. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  222. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +0 -189
  223. package/dist/mjs/data-structures/binary-tree/avl-tree.js.map +0 -1
  224. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  225. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +0 -1
  226. package/dist/mjs/data-structures/binary-tree/bst.js.map +0 -1
  227. package/dist/mjs/data-structures/binary-tree/red-black-tree.js.map +0 -1
  228. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  229. package/dist/mjs/data-structures/graph/directed-graph.js.map +0 -1
  230. package/dist/mjs/data-structures/graph/map-graph.js.map +0 -1
  231. package/dist/mjs/data-structures/graph/undirected-graph.js.map +0 -1
  232. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +0 -1
  233. package/dist/mjs/data-structures/linked-list/skip-linked-list.js.map +0 -1
  234. package/dist/mjs/data-structures/matrix/matrix.js.map +0 -1
  235. package/dist/mjs/data-structures/matrix/navigator.js.map +0 -1
  236. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  237. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  238. package/dist/mjs/data-structures/trie/trie.js.map +0 -1
  239. package/dist/mjs/interfaces/binary-tree.d.ts +0 -9
  240. package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -5
  241. package/dist/mjs/types/data-structures/binary-tree/avl-tree.d.ts +0 -5
  242. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +0 -6
  243. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +0 -2
  244. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js.map +0 -1
  245. package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.d.ts +0 -5
  246. package/src/types/data-structures/binary-tree/rb-tree.ts +0 -10
  247. /package/dist/{mjs → esm}/common/index.d.ts +0 -0
  248. /package/dist/{mjs → esm}/common/index.js +0 -0
  249. /package/dist/{mjs → esm}/common/index.js.map +0 -0
  250. /package/dist/{mjs → esm}/data-structures/base/index.d.ts +0 -0
  251. /package/dist/{mjs → esm}/data-structures/base/index.js +0 -0
  252. /package/dist/{mjs → esm}/data-structures/base/index.js.map +0 -0
  253. /package/dist/{mjs → esm}/data-structures/base/iterable-element-base.d.ts +0 -0
  254. /package/dist/{mjs → esm}/data-structures/base/iterable-element-base.js +0 -0
  255. /package/dist/{mjs → esm}/data-structures/base/iterable-element-base.js.map +0 -0
  256. /package/dist/{mjs → esm}/data-structures/base/iterable-entry-base.d.ts +0 -0
  257. /package/dist/{mjs → esm}/data-structures/base/iterable-entry-base.js +0 -0
  258. /package/dist/{mjs → esm}/data-structures/base/iterable-entry-base.js.map +0 -0
  259. /package/dist/{mjs → esm}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  260. /package/dist/{mjs → esm}/data-structures/binary-tree/segment-tree.js +0 -0
  261. /package/dist/{mjs → esm}/data-structures/binary-tree/segment-tree.js.map +0 -0
  262. /package/dist/{mjs → esm}/data-structures/graph/abstract-graph.d.ts +0 -0
  263. /package/dist/{mjs → esm}/data-structures/graph/abstract-graph.js +0 -0
  264. /package/dist/{mjs → esm}/data-structures/graph/abstract-graph.js.map +0 -0
  265. /package/dist/{mjs → esm}/data-structures/graph/index.d.ts +0 -0
  266. /package/dist/{mjs → esm}/data-structures/graph/index.js +0 -0
  267. /package/dist/{mjs → esm}/data-structures/graph/index.js.map +0 -0
  268. /package/dist/{mjs → esm}/data-structures/hash/hash-map.d.ts +0 -0
  269. /package/dist/{mjs → esm}/data-structures/hash/hash-map.js +0 -0
  270. /package/dist/{mjs → esm}/data-structures/hash/hash-map.js.map +0 -0
  271. /package/dist/{mjs → esm}/data-structures/hash/index.d.ts +0 -0
  272. /package/dist/{mjs → esm}/data-structures/hash/index.js +0 -0
  273. /package/dist/{mjs → esm}/data-structures/hash/index.js.map +0 -0
  274. /package/dist/{mjs → esm}/data-structures/heap/heap.d.ts +0 -0
  275. /package/dist/{mjs → esm}/data-structures/heap/heap.js +0 -0
  276. /package/dist/{mjs → esm}/data-structures/heap/heap.js.map +0 -0
  277. /package/dist/{mjs → esm}/data-structures/heap/index.d.ts +0 -0
  278. /package/dist/{mjs → esm}/data-structures/heap/index.js +0 -0
  279. /package/dist/{mjs → esm}/data-structures/heap/index.js.map +0 -0
  280. /package/dist/{mjs → esm}/data-structures/heap/max-heap.d.ts +0 -0
  281. /package/dist/{mjs → esm}/data-structures/heap/max-heap.js +0 -0
  282. /package/dist/{mjs → esm}/data-structures/heap/max-heap.js.map +0 -0
  283. /package/dist/{mjs → esm}/data-structures/heap/min-heap.d.ts +0 -0
  284. /package/dist/{mjs → esm}/data-structures/heap/min-heap.js +0 -0
  285. /package/dist/{mjs → esm}/data-structures/heap/min-heap.js.map +0 -0
  286. /package/dist/{mjs → esm}/data-structures/index.d.ts +0 -0
  287. /package/dist/{mjs → esm}/data-structures/index.js +0 -0
  288. /package/dist/{mjs → esm}/data-structures/index.js.map +0 -0
  289. /package/dist/{mjs → esm}/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  290. /package/dist/{mjs → esm}/data-structures/linked-list/doubly-linked-list.js +0 -0
  291. /package/dist/{mjs → esm}/data-structures/linked-list/doubly-linked-list.js.map +0 -0
  292. /package/dist/{mjs → esm}/data-structures/linked-list/index.d.ts +0 -0
  293. /package/dist/{mjs → esm}/data-structures/linked-list/index.js +0 -0
  294. /package/dist/{mjs → esm}/data-structures/linked-list/index.js.map +0 -0
  295. /package/dist/{mjs → esm}/data-structures/matrix/index.d.ts +0 -0
  296. /package/dist/{mjs → esm}/data-structures/matrix/index.js +0 -0
  297. /package/dist/{mjs → esm}/data-structures/matrix/index.js.map +0 -0
  298. /package/dist/{mjs → esm}/data-structures/priority-queue/index.d.ts +0 -0
  299. /package/dist/{mjs → esm}/data-structures/priority-queue/index.js +0 -0
  300. /package/dist/{mjs → esm}/data-structures/priority-queue/index.js.map +0 -0
  301. /package/dist/{mjs → esm}/data-structures/priority-queue/priority-queue.d.ts +0 -0
  302. /package/dist/{mjs → esm}/data-structures/priority-queue/priority-queue.js +0 -0
  303. /package/dist/{mjs → esm}/data-structures/priority-queue/priority-queue.js.map +0 -0
  304. /package/dist/{mjs → esm}/data-structures/queue/deque.d.ts +0 -0
  305. /package/dist/{mjs → esm}/data-structures/queue/deque.js +0 -0
  306. /package/dist/{mjs → esm}/data-structures/queue/deque.js.map +0 -0
  307. /package/dist/{mjs → esm}/data-structures/queue/index.d.ts +0 -0
  308. /package/dist/{mjs → esm}/data-structures/queue/index.js +0 -0
  309. /package/dist/{mjs → esm}/data-structures/queue/index.js.map +0 -0
  310. /package/dist/{mjs → esm}/data-structures/queue/queue.d.ts +0 -0
  311. /package/dist/{mjs → esm}/data-structures/queue/queue.js +0 -0
  312. /package/dist/{mjs → esm}/data-structures/queue/queue.js.map +0 -0
  313. /package/dist/{mjs → esm}/data-structures/stack/index.d.ts +0 -0
  314. /package/dist/{mjs → esm}/data-structures/stack/index.js +0 -0
  315. /package/dist/{mjs → esm}/data-structures/stack/index.js.map +0 -0
  316. /package/dist/{mjs → esm}/data-structures/stack/stack.d.ts +0 -0
  317. /package/dist/{mjs → esm}/data-structures/stack/stack.js +0 -0
  318. /package/dist/{mjs → esm}/data-structures/stack/stack.js.map +0 -0
  319. /package/dist/{mjs → esm}/data-structures/tree/index.d.ts +0 -0
  320. /package/dist/{mjs → esm}/data-structures/tree/index.js +0 -0
  321. /package/dist/{mjs → esm}/data-structures/tree/index.js.map +0 -0
  322. /package/dist/{mjs → esm}/data-structures/tree/tree.d.ts +0 -0
  323. /package/dist/{mjs → esm}/data-structures/tree/tree.js +0 -0
  324. /package/dist/{mjs → esm}/data-structures/tree/tree.js.map +0 -0
  325. /package/dist/{mjs → esm}/data-structures/trie/index.d.ts +0 -0
  326. /package/dist/{mjs → esm}/data-structures/trie/index.js +0 -0
  327. /package/dist/{mjs → esm}/data-structures/trie/index.js.map +0 -0
  328. /package/dist/{mjs → esm}/index.d.ts +0 -0
  329. /package/dist/{mjs → esm}/index.js +0 -0
  330. /package/dist/{mjs → esm}/index.js.map +0 -0
  331. /package/dist/{mjs → esm}/interfaces/binary-tree.js +0 -0
  332. /package/dist/{mjs → esm}/interfaces/binary-tree.js.map +0 -0
  333. /package/dist/{mjs → esm}/interfaces/doubly-linked-list.d.ts +0 -0
  334. /package/dist/{mjs → esm}/interfaces/doubly-linked-list.js +0 -0
  335. /package/dist/{mjs → esm}/interfaces/doubly-linked-list.js.map +0 -0
  336. /package/dist/{mjs → esm}/interfaces/graph.d.ts +0 -0
  337. /package/dist/{mjs → esm}/interfaces/graph.js +0 -0
  338. /package/dist/{mjs → esm}/interfaces/graph.js.map +0 -0
  339. /package/dist/{mjs → esm}/interfaces/heap.d.ts +0 -0
  340. /package/dist/{mjs → esm}/interfaces/heap.js +0 -0
  341. /package/dist/{mjs → esm}/interfaces/heap.js.map +0 -0
  342. /package/dist/{mjs → esm}/interfaces/index.d.ts +0 -0
  343. /package/dist/{mjs → esm}/interfaces/index.js +0 -0
  344. /package/dist/{mjs → esm}/interfaces/index.js.map +0 -0
  345. /package/dist/{mjs → esm}/interfaces/navigator.d.ts +0 -0
  346. /package/dist/{mjs → esm}/interfaces/navigator.js +0 -0
  347. /package/dist/{mjs → esm}/interfaces/navigator.js.map +0 -0
  348. /package/dist/{mjs → esm}/interfaces/priority-queue.d.ts +0 -0
  349. /package/dist/{mjs → esm}/interfaces/priority-queue.js +0 -0
  350. /package/dist/{mjs → esm}/interfaces/priority-queue.js.map +0 -0
  351. /package/dist/{mjs → esm}/interfaces/segment-tree.d.ts +0 -0
  352. /package/dist/{mjs → esm}/interfaces/segment-tree.js +0 -0
  353. /package/dist/{mjs → esm}/interfaces/segment-tree.js.map +0 -0
  354. /package/dist/{mjs → esm}/interfaces/singly-linked-list.d.ts +0 -0
  355. /package/dist/{mjs → esm}/interfaces/singly-linked-list.js +0 -0
  356. /package/dist/{mjs → esm}/interfaces/singly-linked-list.js.map +0 -0
  357. /package/dist/{mjs → esm}/types/common.d.ts +0 -0
  358. /package/dist/{mjs → esm}/types/common.js +0 -0
  359. /package/dist/{mjs → esm}/types/common.js.map +0 -0
  360. /package/dist/{mjs → esm}/types/data-structures/base/base.d.ts +0 -0
  361. /package/dist/{mjs → esm}/types/data-structures/base/base.js +0 -0
  362. /package/dist/{mjs → esm}/types/data-structures/base/base.js.map +0 -0
  363. /package/dist/{mjs → esm}/types/data-structures/base/index.d.ts +0 -0
  364. /package/dist/{mjs → esm}/types/data-structures/base/index.js +0 -0
  365. /package/dist/{mjs → esm}/types/data-structures/base/index.js.map +0 -0
  366. /package/dist/{mjs → esm}/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -0
  367. /package/dist/{mjs → esm}/types/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -0
  368. /package/dist/{mjs → esm}/types/data-structures/binary-tree/avl-tree.js +0 -0
  369. /package/dist/{mjs → esm}/types/data-structures/binary-tree/avl-tree.js.map +0 -0
  370. /package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  371. /package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-indexed-tree.js +0 -0
  372. /package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -0
  373. /package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-tree.js +0 -0
  374. /package/dist/{mjs → esm}/types/data-structures/binary-tree/binary-tree.js.map +0 -0
  375. /package/dist/{mjs → esm}/types/data-structures/binary-tree/bst.js +0 -0
  376. /package/dist/{mjs → esm}/types/data-structures/binary-tree/bst.js.map +0 -0
  377. /package/dist/{mjs → esm}/types/data-structures/binary-tree/segment-tree.d.ts +0 -0
  378. /package/dist/{mjs → esm}/types/data-structures/binary-tree/segment-tree.js +0 -0
  379. /package/dist/{mjs → esm}/types/data-structures/binary-tree/segment-tree.js.map +0 -0
  380. /package/dist/{mjs → esm}/types/data-structures/binary-tree/tree-multi-map.js +0 -0
  381. /package/dist/{mjs → esm}/types/data-structures/binary-tree/tree-multi-map.js.map +0 -0
  382. /package/dist/{mjs → esm}/types/data-structures/graph/abstract-graph.d.ts +0 -0
  383. /package/dist/{mjs → esm}/types/data-structures/graph/abstract-graph.js +0 -0
  384. /package/dist/{mjs → esm}/types/data-structures/graph/abstract-graph.js.map +0 -0
  385. /package/dist/{mjs → esm}/types/data-structures/graph/directed-graph.d.ts +0 -0
  386. /package/dist/{mjs → esm}/types/data-structures/graph/directed-graph.js +0 -0
  387. /package/dist/{mjs → esm}/types/data-structures/graph/directed-graph.js.map +0 -0
  388. /package/dist/{mjs → esm}/types/data-structures/graph/index.d.ts +0 -0
  389. /package/dist/{mjs → esm}/types/data-structures/graph/index.js +0 -0
  390. /package/dist/{mjs → esm}/types/data-structures/graph/index.js.map +0 -0
  391. /package/dist/{mjs → esm}/types/data-structures/graph/map-graph.d.ts +0 -0
  392. /package/dist/{mjs → esm}/types/data-structures/graph/map-graph.js +0 -0
  393. /package/dist/{mjs → esm}/types/data-structures/graph/map-graph.js.map +0 -0
  394. /package/dist/{mjs → esm}/types/data-structures/graph/undirected-graph.d.ts +0 -0
  395. /package/dist/{mjs → esm}/types/data-structures/graph/undirected-graph.js +0 -0
  396. /package/dist/{mjs → esm}/types/data-structures/graph/undirected-graph.js.map +0 -0
  397. /package/dist/{mjs → esm}/types/data-structures/hash/hash-map.d.ts +0 -0
  398. /package/dist/{mjs → esm}/types/data-structures/hash/hash-map.js +0 -0
  399. /package/dist/{mjs → esm}/types/data-structures/hash/hash-map.js.map +0 -0
  400. /package/dist/{mjs → esm}/types/data-structures/hash/index.d.ts +0 -0
  401. /package/dist/{mjs → esm}/types/data-structures/hash/index.js +0 -0
  402. /package/dist/{mjs → esm}/types/data-structures/hash/index.js.map +0 -0
  403. /package/dist/{mjs → esm}/types/data-structures/heap/heap.d.ts +0 -0
  404. /package/dist/{mjs → esm}/types/data-structures/heap/heap.js +0 -0
  405. /package/dist/{mjs → esm}/types/data-structures/heap/heap.js.map +0 -0
  406. /package/dist/{mjs → esm}/types/data-structures/heap/index.d.ts +0 -0
  407. /package/dist/{mjs → esm}/types/data-structures/heap/index.js +0 -0
  408. /package/dist/{mjs → esm}/types/data-structures/heap/index.js.map +0 -0
  409. /package/dist/{mjs → esm}/types/data-structures/heap/max-heap.d.ts +0 -0
  410. /package/dist/{mjs → esm}/types/data-structures/heap/max-heap.js +0 -0
  411. /package/dist/{mjs → esm}/types/data-structures/heap/max-heap.js.map +0 -0
  412. /package/dist/{mjs → esm}/types/data-structures/heap/min-heap.d.ts +0 -0
  413. /package/dist/{mjs → esm}/types/data-structures/heap/min-heap.js +0 -0
  414. /package/dist/{mjs → esm}/types/data-structures/heap/min-heap.js.map +0 -0
  415. /package/dist/{mjs → esm}/types/data-structures/index.d.ts +0 -0
  416. /package/dist/{mjs → esm}/types/data-structures/index.js +0 -0
  417. /package/dist/{mjs → esm}/types/data-structures/index.js.map +0 -0
  418. /package/dist/{mjs → esm}/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  419. /package/dist/{mjs → esm}/types/data-structures/linked-list/doubly-linked-list.js +0 -0
  420. /package/dist/{mjs → esm}/types/data-structures/linked-list/doubly-linked-list.js.map +0 -0
  421. /package/dist/{mjs → esm}/types/data-structures/linked-list/index.d.ts +0 -0
  422. /package/dist/{mjs → esm}/types/data-structures/linked-list/index.js +0 -0
  423. /package/dist/{mjs → esm}/types/data-structures/linked-list/index.js.map +0 -0
  424. /package/dist/{mjs → esm}/types/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  425. /package/dist/{mjs → esm}/types/data-structures/linked-list/singly-linked-list.js +0 -0
  426. /package/dist/{mjs → esm}/types/data-structures/linked-list/singly-linked-list.js.map +0 -0
  427. /package/dist/{mjs → esm}/types/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  428. /package/dist/{mjs → esm}/types/data-structures/linked-list/skip-linked-list.js +0 -0
  429. /package/dist/{mjs → esm}/types/data-structures/linked-list/skip-linked-list.js.map +0 -0
  430. /package/dist/{mjs → esm}/types/data-structures/matrix/index.d.ts +0 -0
  431. /package/dist/{mjs → esm}/types/data-structures/matrix/index.js +0 -0
  432. /package/dist/{mjs → esm}/types/data-structures/matrix/index.js.map +0 -0
  433. /package/dist/{mjs → esm}/types/data-structures/matrix/matrix.d.ts +0 -0
  434. /package/dist/{mjs → esm}/types/data-structures/matrix/matrix.js +0 -0
  435. /package/dist/{mjs → esm}/types/data-structures/matrix/matrix.js.map +0 -0
  436. /package/dist/{mjs → esm}/types/data-structures/matrix/navigator.d.ts +0 -0
  437. /package/dist/{mjs → esm}/types/data-structures/matrix/navigator.js +0 -0
  438. /package/dist/{mjs → esm}/types/data-structures/matrix/navigator.js.map +0 -0
  439. /package/dist/{mjs → esm}/types/data-structures/priority-queue/index.d.ts +0 -0
  440. /package/dist/{mjs → esm}/types/data-structures/priority-queue/index.js +0 -0
  441. /package/dist/{mjs → esm}/types/data-structures/priority-queue/index.js.map +0 -0
  442. /package/dist/{mjs → esm}/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  443. /package/dist/{mjs → esm}/types/data-structures/priority-queue/max-priority-queue.js +0 -0
  444. /package/dist/{mjs → esm}/types/data-structures/priority-queue/max-priority-queue.js.map +0 -0
  445. /package/dist/{mjs → esm}/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  446. /package/dist/{mjs → esm}/types/data-structures/priority-queue/min-priority-queue.js +0 -0
  447. /package/dist/{mjs → esm}/types/data-structures/priority-queue/min-priority-queue.js.map +0 -0
  448. /package/dist/{mjs → esm}/types/data-structures/priority-queue/priority-queue.d.ts +0 -0
  449. /package/dist/{mjs → esm}/types/data-structures/priority-queue/priority-queue.js +0 -0
  450. /package/dist/{mjs → esm}/types/data-structures/priority-queue/priority-queue.js.map +0 -0
  451. /package/dist/{mjs → esm}/types/data-structures/queue/deque.d.ts +0 -0
  452. /package/dist/{mjs → esm}/types/data-structures/queue/deque.js +0 -0
  453. /package/dist/{mjs → esm}/types/data-structures/queue/deque.js.map +0 -0
  454. /package/dist/{mjs → esm}/types/data-structures/queue/index.d.ts +0 -0
  455. /package/dist/{mjs → esm}/types/data-structures/queue/index.js +0 -0
  456. /package/dist/{mjs → esm}/types/data-structures/queue/index.js.map +0 -0
  457. /package/dist/{mjs → esm}/types/data-structures/queue/queue.d.ts +0 -0
  458. /package/dist/{mjs → esm}/types/data-structures/queue/queue.js +0 -0
  459. /package/dist/{mjs → esm}/types/data-structures/queue/queue.js.map +0 -0
  460. /package/dist/{mjs → esm}/types/data-structures/stack/index.d.ts +0 -0
  461. /package/dist/{mjs → esm}/types/data-structures/stack/index.js +0 -0
  462. /package/dist/{mjs → esm}/types/data-structures/stack/index.js.map +0 -0
  463. /package/dist/{mjs → esm}/types/data-structures/stack/stack.d.ts +0 -0
  464. /package/dist/{mjs → esm}/types/data-structures/stack/stack.js +0 -0
  465. /package/dist/{mjs → esm}/types/data-structures/stack/stack.js.map +0 -0
  466. /package/dist/{mjs → esm}/types/data-structures/tree/index.d.ts +0 -0
  467. /package/dist/{mjs → esm}/types/data-structures/tree/index.js +0 -0
  468. /package/dist/{mjs → esm}/types/data-structures/tree/index.js.map +0 -0
  469. /package/dist/{mjs → esm}/types/data-structures/tree/tree.d.ts +0 -0
  470. /package/dist/{mjs → esm}/types/data-structures/tree/tree.js +0 -0
  471. /package/dist/{mjs → esm}/types/data-structures/tree/tree.js.map +0 -0
  472. /package/dist/{mjs → esm}/types/data-structures/trie/index.d.ts +0 -0
  473. /package/dist/{mjs → esm}/types/data-structures/trie/index.js +0 -0
  474. /package/dist/{mjs → esm}/types/data-structures/trie/index.js.map +0 -0
  475. /package/dist/{mjs → esm}/types/data-structures/trie/trie.d.ts +0 -0
  476. /package/dist/{mjs → esm}/types/data-structures/trie/trie.js +0 -0
  477. /package/dist/{mjs → esm}/types/data-structures/trie/trie.js.map +0 -0
  478. /package/dist/{mjs → esm}/types/index.d.ts +0 -0
  479. /package/dist/{mjs → esm}/types/index.js +0 -0
  480. /package/dist/{mjs → esm}/types/index.js.map +0 -0
  481. /package/dist/{mjs → esm}/types/utils/index.d.ts +0 -0
  482. /package/dist/{mjs → esm}/types/utils/index.js +0 -0
  483. /package/dist/{mjs → esm}/types/utils/index.js.map +0 -0
  484. /package/dist/{mjs → esm}/types/utils/utils.d.ts +0 -0
  485. /package/dist/{mjs → esm}/types/utils/utils.js +0 -0
  486. /package/dist/{mjs → esm}/types/utils/utils.js.map +0 -0
  487. /package/dist/{mjs → esm}/types/utils/validate-type.d.ts +0 -0
  488. /package/dist/{mjs → esm}/types/utils/validate-type.js +0 -0
  489. /package/dist/{mjs → esm}/types/utils/validate-type.js.map +0 -0
  490. /package/dist/{mjs → esm}/utils/index.d.ts +0 -0
  491. /package/dist/{mjs → esm}/utils/index.js +0 -0
  492. /package/dist/{mjs → esm}/utils/index.js.map +0 -0
  493. /package/dist/{mjs → esm}/utils/number.d.ts +0 -0
  494. /package/dist/{mjs → esm}/utils/number.js +0 -0
  495. /package/dist/{mjs → esm}/utils/number.js.map +0 -0
  496. /package/dist/{mjs → esm}/utils/utils.d.ts +0 -0
  497. /package/dist/{mjs → esm}/utils/utils.js +0 -0
  498. /package/dist/{mjs → esm}/utils/utils.js.map +0 -0
@@ -3,119 +3,119 @@ import { AVLTree, AVLTreeNode, BinaryTreeNode, BSTNode } from '../../../../src';
3
3
  describe('AVL Tree Test', () => {
4
4
  it('should perform various operations on a AVL Tree', () => {
5
5
  const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
6
- const tree = new AVLTree<number>();
6
+ const avlTree = new AVLTree<number>();
7
7
 
8
- for (const i of arr) tree.add([i, i]);
8
+ for (const i of arr) avlTree.add([i, i]);
9
9
 
10
- tree.add(null);
11
- const node6 = tree.getNode(6);
10
+ avlTree.add(null);
11
+ const node6 = avlTree.getNode(6);
12
12
 
13
- expect(node6 && tree.getHeight(node6)).toBe(3);
14
- expect(node6 && tree.getDepth(node6)).toBe(1);
13
+ expect(node6 && avlTree.getHeight(node6)).toBe(3);
14
+ expect(node6 && avlTree.getDepth(node6)).toBe(1);
15
15
 
16
- const getNodeById = tree.getNode(10);
16
+ const getNodeById = avlTree.getNode(10);
17
17
  expect(getNodeById?.key).toBe(10);
18
18
 
19
- const getMinNodeByRoot = tree.getLeftMost();
19
+ const getMinNodeByRoot = avlTree.getLeftMost();
20
20
  expect(getMinNodeByRoot).toBe(1);
21
21
 
22
- const node15 = tree.getNode(15);
23
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node => node, node15);
22
+ const node15 = avlTree.getNode(15);
23
+ const getMinNodeBySpecificNode = node15 && avlTree.getLeftMost(node => node, node15);
24
24
  expect(getMinNodeBySpecificNode?.key).toBe(12);
25
25
 
26
26
  let subTreeSum = 0;
27
- if (node15) tree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
27
+ if (node15) avlTree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
28
28
  expect(subTreeSum).toBe(70);
29
29
 
30
30
  let lesserSum = 0;
31
- tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
31
+ avlTree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
32
32
  expect(lesserSum).toBe(45);
33
33
 
34
34
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
35
35
  expect(node15?.value).toBe(undefined);
36
- const dfs = tree.dfs(node => node, 'IN');
36
+ const dfs = avlTree.dfs(node => node, 'IN');
37
37
  expect(dfs[0].key).toBe(1);
38
38
  expect(dfs[dfs.length - 1].key).toBe(16);
39
- tree.perfectlyBalance();
40
- const bfs = tree.bfs(node => node);
41
- expect(tree.isPerfectlyBalanced()).toBe(true);
39
+ avlTree.perfectlyBalance();
40
+ const bfs = avlTree.bfs(node => node);
41
+ expect(avlTree.isPerfectlyBalanced()).toBe(true);
42
42
  expect(bfs[0].key).toBe(8);
43
43
  expect(bfs[bfs.length - 1].key).toBe(16);
44
44
 
45
- expect(tree.delete(tree.getNode(11))[0].deleted?.key).toBe(11);
46
- expect(tree.isAVLBalanced()).toBe(true);
47
- expect(node15 && tree.getHeight(node15)).toBe(2);
45
+ expect(avlTree.delete(avlTree.getNode(11))[0].deleted?.key).toBe(11);
46
+ expect(avlTree.isAVLBalanced()).toBe(true);
47
+ expect(node15 && avlTree.getHeight(node15)).toBe(2);
48
48
 
49
- expect(tree.delete(1)[0].deleted?.key).toBe(1);
50
- expect(tree.isAVLBalanced()).toBe(true);
51
- expect(tree.getHeight()).toBe(4);
49
+ expect(avlTree.delete(1)[0].deleted?.key).toBe(1);
50
+ expect(avlTree.isAVLBalanced()).toBe(true);
51
+ expect(avlTree.getHeight()).toBe(4);
52
52
 
53
- expect(tree.delete(4)[0].deleted?.key).toBe(4);
54
- expect(tree.isAVLBalanced()).toBe(true);
55
- expect(tree.getHeight()).toBe(4);
53
+ expect(avlTree.delete(4)[0].deleted?.key).toBe(4);
54
+ expect(avlTree.isAVLBalanced()).toBe(true);
55
+ expect(avlTree.getHeight()).toBe(4);
56
56
 
57
- expect(tree.delete(10)[0].deleted?.key).toBe(10);
58
- expect(tree.isAVLBalanced()).toBe(true);
59
- expect(tree.getHeight()).toBe(3);
57
+ expect(avlTree.delete(10)[0].deleted?.key).toBe(10);
58
+ expect(avlTree.isAVLBalanced()).toBe(true);
59
+ expect(avlTree.getHeight()).toBe(3);
60
60
 
61
- expect(tree.delete(15)[0].deleted?.key).toBe(15);
62
- expect(tree.isAVLBalanced()).toBe(true);
61
+ expect(avlTree.delete(15)[0].deleted?.key).toBe(15);
62
+ expect(avlTree.isAVLBalanced()).toBe(true);
63
63
 
64
- expect(tree.getHeight()).toBe(3);
64
+ expect(avlTree.getHeight()).toBe(3);
65
65
 
66
- expect(tree.delete(5)[0].deleted?.key).toBe(5);
67
- expect(tree.isAVLBalanced()).toBe(true);
68
- expect(tree.getHeight()).toBe(3);
66
+ expect(avlTree.delete(5)[0].deleted?.key).toBe(5);
67
+ expect(avlTree.isAVLBalanced()).toBe(true);
68
+ expect(avlTree.getHeight()).toBe(3);
69
69
 
70
- expect(tree.delete(13)[0].deleted?.key).toBe(13);
71
- expect(tree.isAVLBalanced()).toBe(true);
72
- expect(tree.getHeight()).toBe(3);
70
+ expect(avlTree.delete(13)[0].deleted?.key).toBe(13);
71
+ expect(avlTree.isAVLBalanced()).toBe(true);
72
+ expect(avlTree.getHeight()).toBe(3);
73
73
 
74
- expect(tree.delete(3)[0].deleted?.key).toBe(3);
75
- expect(tree.isAVLBalanced()).toBe(true);
76
- expect(tree.getHeight()).toBe(3);
74
+ expect(avlTree.delete(3)[0].deleted?.key).toBe(3);
75
+ expect(avlTree.isAVLBalanced()).toBe(true);
76
+ expect(avlTree.getHeight()).toBe(3);
77
77
 
78
- expect(tree.delete(8)[0].deleted?.key).toBe(8);
79
- expect(tree.isAVLBalanced()).toBe(true);
80
- expect(tree.getHeight()).toBe(3);
78
+ expect(avlTree.delete(8)[0].deleted?.key).toBe(8);
79
+ expect(avlTree.isAVLBalanced()).toBe(true);
80
+ expect(avlTree.getHeight()).toBe(3);
81
81
 
82
- expect(tree.delete(6)[0].deleted?.key).toBe(6);
83
- expect(tree.delete(6).length).toBe(0);
84
- expect(tree.isAVLBalanced()).toBe(true);
85
- expect(tree.getHeight()).toBe(2);
82
+ expect(avlTree.delete(6)[0].deleted?.key).toBe(6);
83
+ expect(avlTree.delete(6).length).toBe(0);
84
+ expect(avlTree.isAVLBalanced()).toBe(true);
85
+ expect(avlTree.getHeight()).toBe(2);
86
86
 
87
- expect(tree.delete(7)[0].deleted?.key).toBe(7);
88
- expect(tree.isAVLBalanced()).toBe(true);
89
- expect(tree.getHeight()).toBe(2);
87
+ expect(avlTree.delete(7)[0].deleted?.key).toBe(7);
88
+ expect(avlTree.isAVLBalanced()).toBe(true);
89
+ expect(avlTree.getHeight()).toBe(2);
90
90
 
91
- expect(tree.delete(9)[0].deleted?.key).toBe(9);
92
- expect(tree.isAVLBalanced()).toBe(true);
93
- expect(tree.getHeight()).toBe(2);
94
- expect(tree.delete(14)[0].deleted?.key).toBe(14);
95
- expect(tree.isAVLBalanced()).toBe(true);
96
- expect(tree.getHeight()).toBe(1);
91
+ expect(avlTree.delete(9)[0].deleted?.key).toBe(9);
92
+ expect(avlTree.isAVLBalanced()).toBe(true);
93
+ expect(avlTree.getHeight()).toBe(2);
94
+ expect(avlTree.delete(14)[0].deleted?.key).toBe(14);
95
+ expect(avlTree.isAVLBalanced()).toBe(true);
96
+ expect(avlTree.getHeight()).toBe(1);
97
97
 
98
- expect(tree.isAVLBalanced()).toBe(true);
99
- const lastBFSIds = tree.bfs();
98
+ expect(avlTree.isAVLBalanced()).toBe(true);
99
+ const lastBFSIds = avlTree.bfs();
100
100
  expect(lastBFSIds[0]).toBe(12);
101
101
  expect(lastBFSIds[1]).toBe(2);
102
102
  expect(lastBFSIds[2]).toBe(16);
103
103
 
104
- const lastBFSNodes = tree.bfs(node => node);
104
+ const lastBFSNodes = avlTree.bfs(node => node);
105
105
  expect(lastBFSNodes[0].key).toBe(12);
106
106
  expect(lastBFSNodes[1].key).toBe(2);
107
107
  expect(lastBFSNodes[2].key).toBe(16);
108
108
  });
109
109
 
110
110
  it('should replace value', () => {
111
- const tree = new AVLTree<number, string>([4, 5, [1, '1'], 2, 3], { isMapMode: false });
112
- expect(tree.get(1)).toBe('1');
113
- expect(tree.getNode(1)?.value).toBe('1');
114
- tree.add(1, 'a');
115
- expect(tree.get(1)).toBe('a');
116
- tree.add([1, 'b']);
117
- expect(tree.getNode(1)?.value).toBe('b');
118
- expect(tree.get(1)).toBe('b');
111
+ const avlTree = new AVLTree<number, string>([4, 5, [1, '1'], 2, 3], { isMapMode: false });
112
+ expect(avlTree.get(1)).toBe('1');
113
+ expect(avlTree.getNode(1)?.value).toBe('1');
114
+ avlTree.add(1, 'a');
115
+ expect(avlTree.get(1)).toBe('a');
116
+ avlTree.add([1, 'b']);
117
+ expect(avlTree.getNode(1)?.value).toBe('b');
118
+ expect(avlTree.get(1)).toBe('b');
119
119
  const treeMap = new AVLTree<number>([4, 5, [1, '1'], 2, 3]);
120
120
  expect(treeMap.get(1)).toBe('1');
121
121
  expect(treeMap.getNode(1)?.value).toBe(undefined);
@@ -130,106 +130,106 @@ describe('AVL Tree Test', () => {
130
130
  describe('AVL Tree Test recursively', () => {
131
131
  it('should perform various operations on a AVL Tree', () => {
132
132
  const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
133
- const tree = new AVLTree<number>([], { iterationType: 'RECURSIVE' });
133
+ const avlTree = new AVLTree<number>([], { iterationType: 'RECURSIVE' });
134
134
 
135
- for (const i of arr) tree.add([i, i]);
135
+ for (const i of arr) avlTree.add([i, i]);
136
136
 
137
- const node6 = tree.getNode(6);
137
+ const node6 = avlTree.getNode(6);
138
138
 
139
- expect(node6 && tree.getHeight(node6)).toBe(3);
140
- expect(node6 && tree.getDepth(node6)).toBe(1);
139
+ expect(node6 && avlTree.getHeight(node6)).toBe(3);
140
+ expect(node6 && avlTree.getDepth(node6)).toBe(1);
141
141
 
142
- const getNodeById = tree.getNode(10);
142
+ const getNodeById = avlTree.getNode(10);
143
143
  expect(getNodeById?.key).toBe(10);
144
144
 
145
- const getMinNodeByRoot = tree.getLeftMost();
145
+ const getMinNodeByRoot = avlTree.getLeftMost();
146
146
  expect(getMinNodeByRoot).toBe(1);
147
147
 
148
- const node15 = tree.getNode(15);
149
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node => node, node15);
148
+ const node15 = avlTree.getNode(15);
149
+ const getMinNodeBySpecificNode = node15 && avlTree.getLeftMost(node => node, node15);
150
150
  expect(getMinNodeBySpecificNode?.key).toBe(12);
151
151
 
152
152
  let subTreeSum = 0;
153
- if (node15) tree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
153
+ if (node15) avlTree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
154
154
  expect(subTreeSum).toBe(70);
155
155
 
156
156
  let lesserSum = 0;
157
- tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
157
+ avlTree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
158
158
  expect(lesserSum).toBe(45);
159
159
 
160
160
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
161
161
  expect(node15?.value).toBe(undefined);
162
162
 
163
- const dfs = tree.dfs(node => node, 'IN');
163
+ const dfs = avlTree.dfs(node => node, 'IN');
164
164
  expect(dfs[0].key).toBe(1);
165
165
  expect(dfs[dfs.length - 1].key).toBe(16);
166
166
 
167
- tree.perfectlyBalance();
168
- const bfs = tree.bfs(node => node);
169
- expect(tree.isPerfectlyBalanced()).toBe(true);
167
+ avlTree.perfectlyBalance();
168
+ const bfs = avlTree.bfs(node => node);
169
+ expect(avlTree.isPerfectlyBalanced()).toBe(true);
170
170
  expect(bfs[0].key).toBe(8);
171
171
  expect(bfs[bfs.length - 1].key).toBe(16);
172
172
 
173
- expect(tree.delete(11)[0].deleted?.key).toBe(11);
174
- expect(tree.isAVLBalanced()).toBe(true);
175
- expect(node15 && tree.getHeight(node15)).toBe(2);
173
+ expect(avlTree.delete(11)[0].deleted?.key).toBe(11);
174
+ expect(avlTree.isAVLBalanced()).toBe(true);
175
+ expect(node15 && avlTree.getHeight(node15)).toBe(2);
176
176
 
177
- expect(tree.delete(1)[0].deleted?.key).toBe(1);
178
- expect(tree.isAVLBalanced()).toBe(true);
179
- expect(tree.getHeight()).toBe(4);
177
+ expect(avlTree.delete(1)[0].deleted?.key).toBe(1);
178
+ expect(avlTree.isAVLBalanced()).toBe(true);
179
+ expect(avlTree.getHeight()).toBe(4);
180
180
 
181
- expect(tree.delete(4)[0].deleted?.key).toBe(4);
182
- expect(tree.isAVLBalanced()).toBe(true);
183
- expect(tree.getHeight()).toBe(4);
181
+ expect(avlTree.delete(4)[0].deleted?.key).toBe(4);
182
+ expect(avlTree.isAVLBalanced()).toBe(true);
183
+ expect(avlTree.getHeight()).toBe(4);
184
184
 
185
- expect(tree.delete(10)[0].deleted?.key).toBe(10);
186
- expect(tree.isAVLBalanced()).toBe(true);
187
- expect(tree.getHeight()).toBe(3);
185
+ expect(avlTree.delete(10)[0].deleted?.key).toBe(10);
186
+ expect(avlTree.isAVLBalanced()).toBe(true);
187
+ expect(avlTree.getHeight()).toBe(3);
188
188
 
189
- expect(tree.delete(15)[0].deleted?.key).toBe(15);
190
- expect(tree.isAVLBalanced()).toBe(true);
189
+ expect(avlTree.delete(15)[0].deleted?.key).toBe(15);
190
+ expect(avlTree.isAVLBalanced()).toBe(true);
191
191
 
192
- expect(tree.getHeight()).toBe(3);
192
+ expect(avlTree.getHeight()).toBe(3);
193
193
 
194
- expect(tree.delete(5)[0].deleted?.key).toBe(5);
195
- expect(tree.isAVLBalanced()).toBe(true);
196
- expect(tree.getHeight()).toBe(3);
194
+ expect(avlTree.delete(5)[0].deleted?.key).toBe(5);
195
+ expect(avlTree.isAVLBalanced()).toBe(true);
196
+ expect(avlTree.getHeight()).toBe(3);
197
197
 
198
- expect(tree.delete(13)[0].deleted?.key).toBe(13);
199
- expect(tree.isAVLBalanced()).toBe(true);
200
- expect(tree.getHeight()).toBe(3);
198
+ expect(avlTree.delete(13)[0].deleted?.key).toBe(13);
199
+ expect(avlTree.isAVLBalanced()).toBe(true);
200
+ expect(avlTree.getHeight()).toBe(3);
201
201
 
202
- expect(tree.delete(3)[0].deleted?.key).toBe(3);
203
- expect(tree.isAVLBalanced()).toBe(true);
204
- expect(tree.getHeight()).toBe(3);
202
+ expect(avlTree.delete(3)[0].deleted?.key).toBe(3);
203
+ expect(avlTree.isAVLBalanced()).toBe(true);
204
+ expect(avlTree.getHeight()).toBe(3);
205
205
 
206
- expect(tree.delete(8)[0].deleted?.key).toBe(8);
207
- expect(tree.isAVLBalanced()).toBe(true);
208
- expect(tree.getHeight()).toBe(3);
206
+ expect(avlTree.delete(8)[0].deleted?.key).toBe(8);
207
+ expect(avlTree.isAVLBalanced()).toBe(true);
208
+ expect(avlTree.getHeight()).toBe(3);
209
209
 
210
- expect(tree.delete(6)[0].deleted?.key).toBe(6);
211
- expect(tree.delete(6).length).toBe(0);
212
- expect(tree.isAVLBalanced()).toBe(true);
213
- expect(tree.getHeight()).toBe(2);
210
+ expect(avlTree.delete(6)[0].deleted?.key).toBe(6);
211
+ expect(avlTree.delete(6).length).toBe(0);
212
+ expect(avlTree.isAVLBalanced()).toBe(true);
213
+ expect(avlTree.getHeight()).toBe(2);
214
214
 
215
- expect(tree.delete(7)[0].deleted?.key).toBe(7);
216
- expect(tree.isAVLBalanced()).toBe(true);
217
- expect(tree.getHeight()).toBe(2);
215
+ expect(avlTree.delete(7)[0].deleted?.key).toBe(7);
216
+ expect(avlTree.isAVLBalanced()).toBe(true);
217
+ expect(avlTree.getHeight()).toBe(2);
218
218
 
219
- expect(tree.delete(9)[0].deleted?.key).toBe(9);
220
- expect(tree.isAVLBalanced()).toBe(true);
221
- expect(tree.getHeight()).toBe(2);
222
- expect(tree.delete(14)[0].deleted?.key).toBe(14);
223
- expect(tree.isAVLBalanced()).toBe(true);
224
- expect(tree.getHeight()).toBe(1);
219
+ expect(avlTree.delete(9)[0].deleted?.key).toBe(9);
220
+ expect(avlTree.isAVLBalanced()).toBe(true);
221
+ expect(avlTree.getHeight()).toBe(2);
222
+ expect(avlTree.delete(14)[0].deleted?.key).toBe(14);
223
+ expect(avlTree.isAVLBalanced()).toBe(true);
224
+ expect(avlTree.getHeight()).toBe(1);
225
225
 
226
- expect(tree.isAVLBalanced()).toBe(true);
227
- const lastBFSIds = tree.bfs();
226
+ expect(avlTree.isAVLBalanced()).toBe(true);
227
+ const lastBFSIds = avlTree.bfs();
228
228
  expect(lastBFSIds[0]).toBe(12);
229
229
  expect(lastBFSIds[1]).toBe(2);
230
230
  expect(lastBFSIds[2]).toBe(16);
231
231
 
232
- const lastBFSNodes = tree.bfs(node => node);
232
+ const lastBFSNodes = avlTree.bfs(node => node);
233
233
  expect(lastBFSNodes[0].key).toBe(12);
234
234
  expect(lastBFSNodes[1].key).toBe(2);
235
235
  expect(lastBFSNodes[2].key).toBe(16);
@@ -237,66 +237,66 @@ describe('AVL Tree Test recursively', () => {
237
237
  });
238
238
 
239
239
  describe('AVLTree APIs test', () => {
240
- const avl = new AVLTree<number, { id: number; text: string }>();
240
+ const avlTree = new AVLTree<number, { id: number; text: string }>();
241
241
  beforeEach(() => {
242
- avl.clear();
242
+ avlTree.clear();
243
243
  });
244
244
 
245
245
  it('add', () => {
246
- avl.add(1);
246
+ avlTree.add(1);
247
247
  const node2 = new AVLTreeNode(2);
248
- avl.add(node2);
248
+ avlTree.add(node2);
249
249
  const node3 = new AVLTreeNode(3, {
250
250
  id: 3,
251
251
  text: 'text3'
252
252
  });
253
- avl.add(node3);
254
- avl.add([3, { id: 3, text: 'text33' }]);
253
+ avlTree.add(node3);
254
+ avlTree.add([3, { id: 3, text: 'text33' }]);
255
255
 
256
- const bfsRes = avl.bfs(node => node.key);
256
+ const bfsRes = avlTree.bfs(node => node.key);
257
257
  expect(bfsRes[0]).toBe(2);
258
258
  });
259
259
 
260
260
  it('should the clone method', () => {
261
- function checkTreeStructure(avl: AVLTree<string, number>) {
262
- expect(avl.size).toBe(4);
263
- expect(avl.root?.key).toBe('2');
264
- expect(avl.root?.left?.key).toBe('1');
265
- expect(avl.root?.left?.left?.key).toBe(undefined);
266
- expect(avl.root?.left?.right?.key).toBe(undefined);
267
- expect(avl.root?.right?.key).toBe('4');
268
- expect(avl.root?.right?.left?.key).toBe(undefined);
269
- expect(avl.root?.right?.right?.key).toBe('5');
261
+ function checkTreeStructure(avlTree: AVLTree<string, number>) {
262
+ expect(avlTree.size).toBe(4);
263
+ expect(avlTree.root?.key).toBe('2');
264
+ expect(avlTree.root?.left?.key).toBe('1');
265
+ expect(avlTree.root?.left?.left?.key).toBe(undefined);
266
+ expect(avlTree.root?.left?.right?.key).toBe(undefined);
267
+ expect(avlTree.root?.right?.key).toBe('4');
268
+ expect(avlTree.root?.right?.left?.key).toBe(undefined);
269
+ expect(avlTree.root?.right?.right?.key).toBe('5');
270
270
  }
271
271
 
272
- const avl = new AVLTree<string, number>();
273
- avl.addMany([
272
+ const avlTree = new AVLTree<string, number>();
273
+ avlTree.addMany([
274
274
  ['2', 2],
275
275
  ['4', 4],
276
276
  ['5', 5],
277
277
  ['3', 3],
278
278
  ['1', 1]
279
279
  ]);
280
- expect(avl.size).toBe(5);
281
- expect(avl.root?.key).toBe('2');
282
- expect(avl.root?.left?.key).toBe('1');
283
- expect(avl.root?.left?.left?.key).toBe(undefined);
284
- expect(avl.root?.left?.right?.key).toBe(undefined);
285
- expect(avl.root?.right?.key).toBe('4');
286
- expect(avl.root?.right?.left?.key).toBe('3');
287
- expect(avl.root?.right?.right?.key).toBe('5');
288
- avl.delete('3');
289
- checkTreeStructure(avl);
290
- const cloned = avl.clone();
280
+ expect(avlTree.size).toBe(5);
281
+ expect(avlTree.root?.key).toBe('2');
282
+ expect(avlTree.root?.left?.key).toBe('1');
283
+ expect(avlTree.root?.left?.left?.key).toBe(undefined);
284
+ expect(avlTree.root?.left?.right?.key).toBe(undefined);
285
+ expect(avlTree.root?.right?.key).toBe('4');
286
+ expect(avlTree.root?.right?.left?.key).toBe('3');
287
+ expect(avlTree.root?.right?.right?.key).toBe('5');
288
+ avlTree.delete('3');
289
+ checkTreeStructure(avlTree);
290
+ const cloned = avlTree.clone();
291
291
  checkTreeStructure(cloned);
292
292
  cloned.delete('1');
293
- expect(avl.size).toBe(4);
293
+ expect(avlTree.size).toBe(4);
294
294
  expect(cloned.size).toBe(3);
295
295
  });
296
296
  });
297
297
 
298
298
  describe('AVLTree', () => {
299
- it('should balance the tree using _balanceLR when nodes are added', () => {
299
+ it('should balance the avlTree using _balanceLR when nodes are added', () => {
300
300
  const avlTree = new AVLTree();
301
301
  avlTree.add([10, 'A']);
302
302
  avlTree.add([5, 'B']);
@@ -307,30 +307,30 @@ describe('AVLTree', () => {
307
307
  // Adding nodes to trigger _balanceLR
308
308
  avlTree.add([12, 'F']);
309
309
 
310
- // You can add more specific assertions to check the tree's balance and structure.
310
+ // You can add more specific assertions to check the avlTree's balance and structure.
311
311
  });
312
312
 
313
313
  it('should addMany undefined and null', () => {
314
- const avl = new AVLTree<number, string>();
315
- const addManyWithUndefined = avl.addMany([1, undefined, 3]);
314
+ const avlTree = new AVLTree<number, string>();
315
+ const addManyWithUndefined = avlTree.addMany([1, undefined, 3]);
316
316
  expect(addManyWithUndefined).toEqual([true, false, true]);
317
- expect(avl.get(undefined)).toBe(undefined);
318
- const addManyWithNull = avl.addMany([1, null, 3, 4]);
317
+ expect(avlTree.get(undefined)).toBe(undefined);
318
+ const addManyWithNull = avlTree.addMany([1, null, 3, 4]);
319
319
  expect(addManyWithNull).toEqual([true, false, true, true]);
320
- const addManyEntriesWithNull = avl.addMany([
320
+ const addManyEntriesWithNull = avlTree.addMany([
321
321
  [1, '1'],
322
322
  [null, 'null'],
323
323
  [3, '3'],
324
324
  [4, '4']
325
325
  ]);
326
326
  expect(addManyEntriesWithNull).toEqual([true, false, true, true]);
327
- expect(avl.get(null)).toBe(undefined);
328
- const node0 = avl.add(0, '0');
327
+ expect(avlTree.get(null)).toBe(undefined);
328
+ const node0 = avlTree.add(0, '0');
329
329
  expect(node0).toBe(true);
330
- expect(avl.get(0)).toBe('0');
330
+ expect(avlTree.get(0)).toBe('0');
331
331
  });
332
332
 
333
- it('should balance the tree using _balanceLR when nodes are deleted', () => {
333
+ it('should balance the avlTree using _balanceLR when nodes are deleted', () => {
334
334
  const avlTree = new AVLTree();
335
335
  avlTree.add([10, 'A']);
336
336
  avlTree.add([5, 'B']);
@@ -342,43 +342,43 @@ describe('AVLTree', () => {
342
342
  // Deleting nodes to trigger _balanceLR
343
343
  avlTree.delete(3);
344
344
 
345
- // You can add more specific assertions to check the tree's balance and structure.
345
+ // You can add more specific assertions to check the avlTree's balance and structure.
346
346
  });
347
347
 
348
- describe('BinaryTree APIs test', () => {
349
- const avl = new AVLTree<number, { id: number; text: string }>();
348
+ describe('AVLTree APIs test', () => {
349
+ const avlTree = new AVLTree<number, { id: number; text: string }>();
350
350
  beforeEach(() => {
351
- avl.clear();
351
+ avlTree.clear();
352
352
  });
353
353
 
354
354
  it('add', () => {
355
- avl.add(1);
355
+ avlTree.add(1);
356
356
  const node2 = new AVLTreeNode(2);
357
- avl.add(node2);
357
+ avlTree.add(node2);
358
358
  const node3 = new AVLTreeNode(3, {
359
359
  id: 3,
360
360
  text: 'text3'
361
361
  });
362
- avl.add(node3);
363
- avl.add([3, { id: 3, text: 'text33' }]);
362
+ avlTree.add(node3);
363
+ avlTree.add([3, { id: 3, text: 'text33' }]);
364
364
 
365
- const bfsRes = avl.bfs(node => node);
365
+ const bfsRes = avlTree.bfs(node => node);
366
366
  expect(bfsRes[0]?.key).toBe(2);
367
367
  });
368
368
  });
369
369
  });
370
370
 
371
371
  describe('AVLTree iterative methods test', () => {
372
- let avl: AVLTree<number, string>;
372
+ let avlTree: AVLTree<number, string>;
373
373
  beforeEach(() => {
374
- avl = new AVLTree();
375
- avl.add([1, 'a']);
376
- avl.add([2, 'b']);
377
- avl.add([3, 'c']);
374
+ avlTree = new AVLTree();
375
+ avlTree.add([1, 'a']);
376
+ avlTree.add([2, 'b']);
377
+ avlTree.add([3, 'c']);
378
378
  });
379
379
 
380
380
  it('The node obtained by get Node should match the node type', () => {
381
- const node3 = avl.getNode(3);
381
+ const node3 = avlTree.getNode(3);
382
382
  expect(node3).toBeInstanceOf(BinaryTreeNode);
383
383
  expect(node3).toBeInstanceOf(BSTNode);
384
384
  expect(node3).toBeInstanceOf(AVLTreeNode);
@@ -386,7 +386,7 @@ describe('AVLTree iterative methods test', () => {
386
386
 
387
387
  it('forEach should iterate over all elements', () => {
388
388
  const mockCallback = jest.fn();
389
- avl.forEach((key, value) => {
389
+ avlTree.forEach((key, value) => {
390
390
  mockCallback(key, value);
391
391
  });
392
392
 
@@ -396,8 +396,8 @@ describe('AVLTree iterative methods test', () => {
396
396
  expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
397
397
  });
398
398
 
399
- it('filter should return a new tree with filtered elements', () => {
400
- const filteredTree = avl.filter(key => key > 1);
399
+ it('filter should return a new avlTree with filtered elements', () => {
400
+ const filteredTree = avlTree.filter(key => key > 1);
401
401
  expect(filteredTree.size).toBe(2);
402
402
  expect([...filteredTree]).toEqual([
403
403
  [2, 'b'],
@@ -405,8 +405,8 @@ describe('AVLTree iterative methods test', () => {
405
405
  ]);
406
406
  });
407
407
 
408
- it('map should return a new tree with modified elements', () => {
409
- const mappedTree = avl.map((key, value) => [(key * 2).toString(), value]);
408
+ it('map should return a new avlTree with modified elements', () => {
409
+ const mappedTree = avlTree.map((key, value) => [(key * 2).toString(), value]);
410
410
  expect(mappedTree.size).toBe(3);
411
411
  expect([...mappedTree]).toEqual([
412
412
  ['2', 'a'],
@@ -416,13 +416,13 @@ describe('AVLTree iterative methods test', () => {
416
416
  });
417
417
 
418
418
  it('reduce should accumulate values', () => {
419
- const sum = avl.reduce((acc, value, key) => acc + key, 0);
419
+ const sum = avlTree.reduce((acc, value, key) => acc + key, 0);
420
420
  expect(sum).toBe(6);
421
421
  });
422
422
 
423
423
  it('[Symbol.iterator] should provide an iterator', () => {
424
424
  const entries = [];
425
- for (const entry of avl) {
425
+ for (const entry of avlTree) {
426
426
  entries.push(entry);
427
427
  }
428
428
 
@@ -435,23 +435,23 @@ describe('AVLTree iterative methods test', () => {
435
435
  });
436
436
 
437
437
  it('should clone work well', () => {
438
- const cloned = avl.clone();
438
+ const cloned = avlTree.clone();
439
439
  expect(cloned.root?.left?.key).toBe(1);
440
440
  expect(cloned.root?.right?.value).toBe(undefined);
441
441
  });
442
442
 
443
443
  it('should keys', () => {
444
- const keys = avl.keys();
444
+ const keys = avlTree.keys();
445
445
  expect([...keys]).toEqual([1, 2, 3]);
446
446
  });
447
447
 
448
448
  it('should values', () => {
449
- const values = avl.values();
449
+ const values = avlTree.values();
450
450
  expect([...values]).toEqual(['a', 'b', 'c']);
451
451
  });
452
452
 
453
453
  it('should leaves', () => {
454
- const leaves = avl.leaves();
454
+ const leaves = avlTree.leaves();
455
455
  expect(leaves).toEqual([1, 3]);
456
456
  });
457
457
  });
@@ -459,85 +459,85 @@ describe('AVLTree iterative methods test', () => {
459
459
  describe('AVL Tree not map mode', () => {
460
460
  it('should perform various operations on a AVL Tree', () => {
461
461
  const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
462
- const tree = new AVLTree<number>([], { isMapMode: false });
462
+ const avlTree = new AVLTree<number>([], { isMapMode: false });
463
463
 
464
- for (const i of arr) tree.add([i, i]);
464
+ for (const i of arr) avlTree.add([i, i]);
465
465
 
466
- tree.add(null);
467
- const node6 = tree.getNode(6);
466
+ avlTree.add(null);
467
+ const node6 = avlTree.getNode(6);
468
468
 
469
- expect(node6 && tree.getHeight(node6)).toBe(3);
470
- expect(node6 && tree.getDepth(node6)).toBe(1);
469
+ expect(node6 && avlTree.getHeight(node6)).toBe(3);
470
+ expect(node6 && avlTree.getDepth(node6)).toBe(1);
471
471
 
472
- const getNodeById = tree.getNode(10);
472
+ const getNodeById = avlTree.getNode(10);
473
473
  expect(getNodeById?.key).toBe(10);
474
474
 
475
- const getMinNodeByRoot = tree.getLeftMost();
475
+ const getMinNodeByRoot = avlTree.getLeftMost();
476
476
  expect(getMinNodeByRoot).toBe(1);
477
477
 
478
- const node15 = tree.getNode(15);
479
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node => node, node15);
478
+ const node15 = avlTree.getNode(15);
479
+ const getMinNodeBySpecificNode = node15 && avlTree.getLeftMost(node => node, node15);
480
480
  expect(getMinNodeBySpecificNode?.key).toBe(12);
481
481
 
482
482
  let subTreeSum = 0;
483
- if (node15) tree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
483
+ if (node15) avlTree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
484
484
  expect(subTreeSum).toBe(70);
485
485
 
486
486
  let lesserSum = 0;
487
- tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
487
+ avlTree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
488
488
  expect(lesserSum).toBe(45);
489
489
 
490
490
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
491
- expect(tree.get(node15)).toBe(15);
491
+ expect(avlTree.get(node15)).toBe(15);
492
492
  });
493
493
  });
494
494
 
495
495
  describe('AVL Tree not map mode test recursively', () => {
496
496
  it('should perform various operations on a AVL Tree', () => {
497
497
  const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
498
- const tree = new AVLTree<number>([], { iterationType: 'RECURSIVE', isMapMode: false });
498
+ const avlTree = new AVLTree<number>([], { iterationType: 'RECURSIVE', isMapMode: false });
499
499
 
500
- for (const i of arr) tree.add([i, i]);
500
+ for (const i of arr) avlTree.add([i, i]);
501
501
 
502
- const node6 = tree.getNode(6);
502
+ const node6 = avlTree.getNode(6);
503
503
 
504
- expect(node6 && tree.getHeight(node6)).toBe(3);
505
- expect(node6 && tree.getDepth(node6)).toBe(1);
504
+ expect(node6 && avlTree.getHeight(node6)).toBe(3);
505
+ expect(node6 && avlTree.getDepth(node6)).toBe(1);
506
506
 
507
- const getNodeById = tree.getNode(10);
507
+ const getNodeById = avlTree.getNode(10);
508
508
  expect(getNodeById?.key).toBe(10);
509
509
 
510
- const getMinNodeByRoot = tree.getLeftMost();
510
+ const getMinNodeByRoot = avlTree.getLeftMost();
511
511
  expect(getMinNodeByRoot).toBe(1);
512
512
 
513
- const node15 = tree.getNode(15);
514
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node => node, node15);
513
+ const node15 = avlTree.getNode(15);
514
+ const getMinNodeBySpecificNode = node15 && avlTree.getLeftMost(node => node, node15);
515
515
  expect(getMinNodeBySpecificNode?.key).toBe(12);
516
516
 
517
517
  let subTreeSum = 0;
518
- if (node15) tree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
518
+ if (node15) avlTree.dfs(node => (subTreeSum += node.key), 'PRE', node15);
519
519
  expect(subTreeSum).toBe(70);
520
520
 
521
521
  let lesserSum = 0;
522
- tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
522
+ avlTree.lesserOrGreaterTraverse(node => (lesserSum += node.key), -1, 10);
523
523
  expect(lesserSum).toBe(45);
524
524
 
525
525
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
526
- expect(tree.get(node15)).toBe(15);
526
+ expect(avlTree.get(node15)).toBe(15);
527
527
  });
528
528
  });
529
529
 
530
530
  describe('AVLTree iterative methods not map mode', () => {
531
- let avl: AVLTree<number, string>;
531
+ let avlTree: AVLTree<number, string>;
532
532
  beforeEach(() => {
533
- avl = new AVLTree<number, string>([], { isMapMode: false });
534
- avl.add([1, 'a']);
535
- avl.add([2, 'b']);
536
- avl.add([3, 'c']);
533
+ avlTree = new AVLTree<number, string>([], { isMapMode: false });
534
+ avlTree.add([1, 'a']);
535
+ avlTree.add([2, 'b']);
536
+ avlTree.add([3, 'c']);
537
537
  });
538
538
 
539
539
  it('should clone work well', () => {
540
- const cloned = avl.clone();
540
+ const cloned = avlTree.clone();
541
541
  expect(cloned.root?.left?.key).toBe(1);
542
542
  expect(cloned.get(cloned.root?.right?.key)).toBe('c');
543
543
  });