data-structure-typed 1.44.1 → 1.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/.eslintrc.js +6 -6
  2. package/CHANGELOG.md +1 -1
  3. package/README.md +15 -15
  4. package/benchmark/report.html +15 -15
  5. package/benchmark/report.json +121 -121
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  9. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
  12. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  13. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  14. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  15. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  16. package/dist/cjs/data-structures/hash/hash-map.d.ts +230 -37
  17. package/dist/cjs/data-structures/hash/hash-map.js +427 -115
  18. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  19. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -1
  20. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -1
  21. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  22. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  23. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  24. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  25. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  26. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  27. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -1
  28. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -1
  29. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -1
  30. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  31. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  32. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  33. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  34. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  35. package/dist/cjs/data-structures/tree/tree.js.map +1 -1
  36. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  37. package/dist/cjs/types/data-structures/hash/hash-map.d.ts +15 -1
  38. package/dist/cjs/types/data-structures/hash/index.d.ts +6 -0
  39. package/dist/cjs/types/data-structures/hash/index.js +20 -0
  40. package/dist/cjs/types/data-structures/hash/index.js.map +1 -1
  41. package/dist/cjs/utils/utils.d.ts +3 -0
  42. package/dist/cjs/utils/utils.js +15 -1
  43. package/dist/cjs/utils/utils.js.map +1 -1
  44. package/dist/mjs/data-structures/hash/hash-map.d.ts +230 -37
  45. package/dist/mjs/data-structures/hash/hash-map.js +433 -121
  46. package/dist/mjs/types/data-structures/hash/hash-map.d.ts +15 -1
  47. package/dist/mjs/types/data-structures/hash/index.d.ts +6 -0
  48. package/dist/mjs/types/data-structures/hash/index.js +6 -1
  49. package/dist/mjs/utils/utils.d.ts +3 -0
  50. package/dist/mjs/utils/utils.js +11 -0
  51. package/dist/umd/data-structure-typed.js +533 -207
  52. package/dist/umd/data-structure-typed.min.js +1 -1
  53. package/dist/umd/data-structure-typed.min.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/data-structures/binary-tree/avl-tree.ts +7 -7
  56. package/src/data-structures/binary-tree/binary-indexed-tree.ts +3 -3
  57. package/src/data-structures/binary-tree/binary-tree.ts +39 -31
  58. package/src/data-structures/binary-tree/bst.ts +12 -8
  59. package/src/data-structures/binary-tree/rb-tree.ts +17 -6
  60. package/src/data-structures/binary-tree/segment-tree.ts +1 -1
  61. package/src/data-structures/binary-tree/tree-multimap.ts +12 -9
  62. package/src/data-structures/graph/abstract-graph.ts +46 -31
  63. package/src/data-structures/graph/directed-graph.ts +10 -5
  64. package/src/data-structures/graph/map-graph.ts +8 -8
  65. package/src/data-structures/graph/undirected-graph.ts +9 -9
  66. package/src/data-structures/hash/hash-map.ts +430 -123
  67. package/src/data-structures/hash/hash-table.ts +1 -1
  68. package/src/data-structures/hash/tree-map.ts +2 -1
  69. package/src/data-structures/hash/tree-set.ts +2 -1
  70. package/src/data-structures/heap/heap.ts +8 -5
  71. package/src/data-structures/heap/max-heap.ts +3 -3
  72. package/src/data-structures/heap/min-heap.ts +3 -3
  73. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  74. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  75. package/src/data-structures/matrix/matrix.ts +2 -2
  76. package/src/data-structures/matrix/matrix2d.ts +1 -1
  77. package/src/data-structures/matrix/navigator.ts +3 -3
  78. package/src/data-structures/matrix/vector2d.ts +2 -1
  79. package/src/data-structures/priority-queue/max-priority-queue.ts +3 -3
  80. package/src/data-structures/priority-queue/min-priority-queue.ts +3 -3
  81. package/src/data-structures/priority-queue/priority-queue.ts +3 -3
  82. package/src/data-structures/queue/deque.ts +5 -4
  83. package/src/data-structures/queue/queue.ts +2 -2
  84. package/src/data-structures/tree/tree.ts +1 -1
  85. package/src/data-structures/trie/trie.ts +1 -1
  86. package/src/interfaces/binary-tree.ts +2 -2
  87. package/src/interfaces/graph.ts +1 -1
  88. package/src/types/data-structures/binary-tree/avl-tree.ts +2 -2
  89. package/src/types/data-structures/binary-tree/binary-tree.ts +1 -1
  90. package/src/types/data-structures/binary-tree/bst.ts +2 -2
  91. package/src/types/data-structures/binary-tree/rb-tree.ts +2 -2
  92. package/src/types/data-structures/binary-tree/tree-multimap.ts +2 -2
  93. package/src/types/data-structures/hash/hash-map.ts +17 -1
  94. package/src/types/data-structures/hash/index.ts +7 -0
  95. package/src/types/data-structures/matrix/navigator.ts +1 -1
  96. package/src/types/utils/utils.ts +1 -1
  97. package/src/types/utils/validate-type.ts +18 -4
  98. package/src/utils/utils.ts +16 -3
  99. package/test/config.ts +1 -1
  100. package/test/integration/all-in-one.ts +1 -1
  101. package/test/integration/avl-tree.test.ts +1 -1
  102. package/test/integration/bst.test.ts +19 -19
  103. package/test/integration/heap.test.js +1 -1
  104. package/test/integration/index.html +7 -7
  105. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +4 -4
  106. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +4 -4
  107. package/test/performance/data-structures/binary-tree/bst.test.ts +4 -4
  108. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +6 -6
  109. package/test/performance/data-structures/graph/directed-graph.test.ts +4 -4
  110. package/test/performance/data-structures/hash/hash-map.test.ts +6 -6
  111. package/test/performance/data-structures/heap/heap.test.ts +5 -5
  112. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +6 -6
  113. package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +4 -4
  114. package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +7 -5
  115. package/test/performance/data-structures/priority-queue/priority-queue.test.ts +7 -7
  116. package/test/performance/data-structures/queue/deque.test.ts +5 -5
  117. package/test/performance/data-structures/queue/queue.test.ts +6 -6
  118. package/test/performance/data-structures/stack/stack.test.ts +6 -6
  119. package/test/performance/data-structures/trie/trie.test.ts +4 -4
  120. package/test/performance/reportor.ts +15 -13
  121. package/test/performance/types/reportor.ts +1 -1
  122. package/test/types/utils/json2html.ts +1 -1
  123. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +8 -8
  124. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +12 -12
  125. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +46 -76
  126. package/test/unit/data-structures/binary-tree/bst.test.ts +50 -46
  127. package/test/unit/data-structures/binary-tree/overall.test.ts +18 -18
  128. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +21 -21
  129. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +1 -1
  130. package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +37 -37
  131. package/test/unit/data-structures/graph/abstract-graph.test.ts +9 -8
  132. package/test/unit/data-structures/graph/directed-graph.test.ts +34 -14
  133. package/test/unit/data-structures/graph/map-graph.test.ts +1 -1
  134. package/test/unit/data-structures/graph/overall.test.ts +1 -1
  135. package/test/unit/data-structures/graph/undirected-graph.test.ts +2 -2
  136. package/test/unit/data-structures/hash/coordinate-map.test.ts +1 -1
  137. package/test/unit/data-structures/hash/coordinate-set.test.ts +1 -1
  138. package/test/unit/data-structures/hash/hash-map.test.ts +150 -21
  139. package/test/unit/data-structures/hash/hash-table.test.ts +1 -1
  140. package/test/unit/data-structures/heap/heap.test.ts +41 -29
  141. package/test/unit/data-structures/heap/max-heap.test.ts +6 -6
  142. package/test/unit/data-structures/heap/min-heap.test.ts +6 -6
  143. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +6 -6
  144. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +7 -7
  145. package/test/unit/data-structures/linked-list/skip-list.test.ts +5 -5
  146. package/test/unit/data-structures/matrix/matrix.test.ts +5 -5
  147. package/test/unit/data-structures/matrix/matrix2d.test.ts +3 -3
  148. package/test/unit/data-structures/matrix/navigator.test.ts +2 -2
  149. package/test/unit/data-structures/matrix/vector2d.test.ts +1 -1
  150. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +7 -7
  151. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -1
  152. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +19 -13
  153. package/test/unit/data-structures/queue/deque.test.ts +28 -28
  154. package/test/unit/data-structures/queue/queue.test.ts +3 -3
  155. package/test/unit/data-structures/stack/stack.test.ts +1 -1
  156. package/test/unit/data-structures/tree/tree.test.ts +1 -1
  157. package/test/unit/data-structures/trie/trie.test.ts +10 -10
  158. package/test/utils/array.ts +2 -2
  159. package/test/utils/big-o.ts +4 -4
  160. package/test/utils/json2html.ts +7 -3
  161. package/test/utils/number.ts +1 -1
@@ -1,6 +1,6 @@
1
- import {BinaryTree, BinaryTreeNode, IterationType} from '../../../../src';
2
- import {getRandomIntArray} from '../../../utils';
3
- import {FamilyPosition} from 'binary-tree-typed';
1
+ import { BinaryTree, BinaryTreeNode, IterationType } from '../../../../src';
2
+ import { getRandomIntArray } from '../../../utils';
3
+ import { FamilyPosition } from 'binary-tree-typed';
4
4
  // import {isDebugTest} from '../../../config';
5
5
 
6
6
  // const isDebug = isDebugTest;
@@ -242,8 +242,12 @@ describe('BinaryTree', () => {
242
242
  tree.addMany([4, 2, 6, null, 1, 3, null, 5, null, 7]);
243
243
  expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
244
244
  expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 3, 7]);
245
- expect(tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.ITERATIVE, true)).toEqual([6, 3, 7, null]);
246
- expect(tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.RECURSIVE, true)).toEqual([6, 3, 7, null]);
245
+ expect(
246
+ tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.ITERATIVE, true)
247
+ ).toEqual([6, 3, 7, null]);
248
+ expect(
249
+ tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.RECURSIVE, true)
250
+ ).toEqual([6, 3, 7, null]);
247
251
  });
248
252
 
249
253
  it('should clear the tree', () => {
@@ -315,81 +319,41 @@ describe('BinaryTree traversals', () => {
315
319
 
316
320
  const arr = [35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55];
317
321
  tree.refill(arr);
318
- expect(tree.bfs(node => node, tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))).toEqual([
319
- 35,
320
- 20,
321
- 40,
322
- 15,
323
- 29,
324
- null,
325
- 50,
326
- null,
327
- 16,
328
- 28,
329
- 30,
330
- 45,
331
- 55
332
- ]);
333
- expect(tree.bfs(node => node, tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))).toEqual([
334
- 35,
335
- 20,
336
- 40,
337
- 15,
338
- 29,
339
- null,
340
- 50,
341
- null,
342
- 16,
343
- 28,
344
- 30,
345
- 45,
346
- 55
347
- ]);
348
- expect(tree.bfs(node => node, tree.root, IterationType.ITERATIVE).map(node => (node === null ? null : node.key))).toEqual([
349
- 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
350
- ]);
351
- expect(tree.bfs(node => node, tree.root, IterationType.RECURSIVE).map(node => (node === null ? null : node.key))).toEqual([
352
- 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
353
- ]);
322
+ expect(
323
+ tree.bfs(node => node, tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))
324
+ ).toEqual([35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55]);
325
+ expect(
326
+ tree.bfs(node => node, tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))
327
+ ).toEqual([35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55]);
328
+ expect(
329
+ tree.bfs(node => node, tree.root, IterationType.ITERATIVE).map(node => (node === null ? null : node.key))
330
+ ).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
331
+ expect(
332
+ tree.bfs(node => node, tree.root, IterationType.RECURSIVE).map(node => (node === null ? null : node.key))
333
+ ).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
354
334
 
355
335
  expect(tree.dfs(node => node.key, 'pre')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
356
- expect(tree.dfs(node => node.key, 'pre', tree.root, IterationType.RECURSIVE)).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
357
- expect(tree.dfs(node => node, 'pre', tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))).toEqual([
358
- 35,
359
- 20,
360
- 15,
361
- null,
362
- 16,
363
- 29,
364
- 28,
365
- 30,
366
- 40,
367
- null,
368
- 50,
369
- 45,
370
- 55
371
- ]);
372
- expect(tree.dfs(node => node, 'pre', tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))).toEqual([
373
- 35,
374
- 20,
375
- 15,
376
- null,
377
- 16,
378
- 29,
379
- 28,
380
- 30,
381
- 40,
382
- null,
383
- 50,
384
- 45,
385
- 55
336
+ expect(tree.dfs(node => node.key, 'pre', tree.root, IterationType.RECURSIVE)).toEqual([
337
+ 35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55
386
338
  ]);
339
+ expect(
340
+ tree.dfs(node => node, 'pre', tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))
341
+ ).toEqual([35, 20, 15, null, 16, 29, 28, 30, 40, null, 50, 45, 55]);
342
+ expect(
343
+ tree.dfs(node => node, 'pre', tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))
344
+ ).toEqual([35, 20, 15, null, 16, 29, 28, 30, 40, null, 50, 45, 55]);
387
345
 
388
346
  expect(tree.dfs(node => node.key, 'in')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
389
347
  expect(tree.dfs(node => node.key, 'post')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
390
- expect(tree.dfs(node => node.key, 'post', tree.root, IterationType.RECURSIVE)).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
391
- expect(tree.bfs(node => node.key, tree.root, IterationType.RECURSIVE)).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
392
- expect(tree.bfs(node => node.key, tree.root, IterationType.ITERATIVE)).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
348
+ expect(tree.dfs(node => node.key, 'post', tree.root, IterationType.RECURSIVE)).toEqual([
349
+ 16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35
350
+ ]);
351
+ expect(tree.bfs(node => node.key, tree.root, IterationType.RECURSIVE)).toEqual([
352
+ 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
353
+ ]);
354
+ expect(tree.bfs(node => node.key, tree.root, IterationType.ITERATIVE)).toEqual([
355
+ 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
356
+ ]);
393
357
 
394
358
  expect(tree.listLevels(node => node.key)).toEqual([[35], [20, 40], [15, 29, 50], [16, 28, 30, 45, 55]]);
395
359
 
@@ -417,7 +381,7 @@ describe('BinaryTree', () => {
417
381
  let tree: BinaryTree<string>;
418
382
 
419
383
  beforeEach(() => {
420
- tree = new BinaryTree<string>({iterationType: IterationType.RECURSIVE});
384
+ tree = new BinaryTree<string>({ iterationType: IterationType.RECURSIVE });
421
385
  });
422
386
 
423
387
  afterEach(() => {
@@ -560,7 +524,13 @@ describe('BinaryTree', () => {
560
524
  expect(nodes.length).toBe(1);
561
525
  expect(nodes[0].key).toBe(3);
562
526
 
563
- const nodesRec = tree.getNodes('B', (node: BinaryTreeNode<string>) => node.value, false, tree.root, IterationType.RECURSIVE);
527
+ const nodesRec = tree.getNodes(
528
+ 'B',
529
+ (node: BinaryTreeNode<string>) => node.value,
530
+ false,
531
+ tree.root,
532
+ IterationType.RECURSIVE
533
+ );
564
534
 
565
535
  expect(nodesRec.length).toBe(1);
566
536
  expect(nodesRec[0].key).toBe(3);
@@ -1,5 +1,5 @@
1
- import {BST, BSTNode, CP, IterationType} from '../../../../src';
2
- import {isDebugTest} from '../../../config';
1
+ import { BST, BSTNode, CP, IterationType } from '../../../../src';
2
+ import { isDebugTest } from '../../../config';
3
3
 
4
4
  const isDebug = isDebugTest;
5
5
 
@@ -189,25 +189,25 @@ describe('BST operations test', () => {
189
189
  });
190
190
 
191
191
  it('should perform various operations on a Binary Search Tree with object values', () => {
192
- const objBST = new BST<{key: number; keyA: number}>();
192
+ const objBST = new BST<{ key: number; keyA: number }>();
193
193
  expect(objBST).toBeInstanceOf(BST);
194
- objBST.add(11, {key: 11, keyA: 11});
195
- objBST.add(3, {key: 3, keyA: 3});
194
+ objBST.add(11, { key: 11, keyA: 11 });
195
+ objBST.add(3, { key: 3, keyA: 3 });
196
196
  const values = [
197
- {key: 15, keyA: 15},
198
- {key: 1, keyA: 1},
199
- {key: 8, keyA: 8},
200
- {key: 13, keyA: 13},
201
- {key: 16, keyA: 16},
202
- {key: 2, keyA: 2},
203
- {key: 6, keyA: 6},
204
- {key: 9, keyA: 9},
205
- {key: 12, keyA: 12},
206
- {key: 14, keyA: 14},
207
- {key: 4, keyA: 4},
208
- {key: 7, keyA: 7},
209
- {key: 10, keyA: 10},
210
- {key: 5, keyA: 5}
197
+ { key: 15, keyA: 15 },
198
+ { key: 1, keyA: 1 },
199
+ { key: 8, keyA: 8 },
200
+ { key: 13, keyA: 13 },
201
+ { key: 16, keyA: 16 },
202
+ { key: 2, keyA: 2 },
203
+ { key: 6, keyA: 6 },
204
+ { key: 9, keyA: 9 },
205
+ { key: 12, keyA: 12 },
206
+ { key: 14, keyA: 14 },
207
+ { key: 4, keyA: 4 },
208
+ { key: 7, keyA: 7 },
209
+ { key: 10, keyA: 10 },
210
+ { key: 5, keyA: 5 }
211
211
  ];
212
212
 
213
213
  objBST.addMany(
@@ -236,7 +236,7 @@ describe('BST operations test', () => {
236
236
  expect(leftMost?.key).toBe(1);
237
237
 
238
238
  const node15 = objBST.getNode(15);
239
- expect(node15?.value).toEqual({key: 15, keyA: 15});
239
+ expect(node15?.value).toEqual({ key: 15, keyA: 15 });
240
240
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
241
241
  expect(minNodeBySpecificNode?.key).toBe(12);
242
242
 
@@ -260,7 +260,7 @@ describe('BST operations test', () => {
260
260
  objBST.perfectlyBalance();
261
261
  expect(objBST.isPerfectlyBalanced()).toBe(true);
262
262
 
263
- const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
263
+ const bfsNodesAfterBalanced: BSTNode<{ key: number; keyA: number }>[] = [];
264
264
  objBST.bfs(node => bfsNodesAfterBalanced.push(node));
265
265
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
266
266
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
@@ -385,7 +385,7 @@ describe('BST operations test', () => {
385
385
  expect(bfsIDs[1]).toBe(12);
386
386
  expect(bfsIDs[2]).toBe(16);
387
387
 
388
- const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
388
+ const bfsNodes: BSTNode<{ key: number; keyA: number }>[] = [];
389
389
  objBST.bfs(node => bfsNodes.push(node));
390
390
  expect(bfsNodes[0].key).toBe(2);
391
391
  expect(bfsNodes[1].key).toBe(12);
@@ -395,7 +395,7 @@ describe('BST operations test', () => {
395
395
 
396
396
  describe('BST operations test recursively', () => {
397
397
  it('should perform various operations on a Binary Search Tree with numeric values', () => {
398
- const bst = new BST({iterationType: IterationType.RECURSIVE});
398
+ const bst = new BST({ iterationType: IterationType.RECURSIVE });
399
399
  expect(bst).toBeInstanceOf(BST);
400
400
  bst.add(11, 11);
401
401
  bst.add(3, 3);
@@ -580,25 +580,25 @@ describe('BST operations test recursively', () => {
580
580
  });
581
581
 
582
582
  it('should perform various operations on a Binary Search Tree with object values', () => {
583
- const objBST = new BST<{key: number; keyA: number}>();
583
+ const objBST = new BST<{ key: number; keyA: number }>();
584
584
  expect(objBST).toBeInstanceOf(BST);
585
- objBST.add(11, {key: 11, keyA: 11});
586
- objBST.add(3, {key: 3, keyA: 3});
585
+ objBST.add(11, { key: 11, keyA: 11 });
586
+ objBST.add(3, { key: 3, keyA: 3 });
587
587
  const values = [
588
- {key: 15, keyA: 15},
589
- {key: 1, keyA: 1},
590
- {key: 8, keyA: 8},
591
- {key: 13, keyA: 13},
592
- {key: 16, keyA: 16},
593
- {key: 2, keyA: 2},
594
- {key: 6, keyA: 6},
595
- {key: 9, keyA: 9},
596
- {key: 12, keyA: 12},
597
- {key: 14, keyA: 14},
598
- {key: 4, keyA: 4},
599
- {key: 7, keyA: 7},
600
- {key: 10, keyA: 10},
601
- {key: 5, keyA: 5}
588
+ { key: 15, keyA: 15 },
589
+ { key: 1, keyA: 1 },
590
+ { key: 8, keyA: 8 },
591
+ { key: 13, keyA: 13 },
592
+ { key: 16, keyA: 16 },
593
+ { key: 2, keyA: 2 },
594
+ { key: 6, keyA: 6 },
595
+ { key: 9, keyA: 9 },
596
+ { key: 12, keyA: 12 },
597
+ { key: 14, keyA: 14 },
598
+ { key: 4, keyA: 4 },
599
+ { key: 7, keyA: 7 },
600
+ { key: 10, keyA: 10 },
601
+ { key: 5, keyA: 5 }
602
602
  ];
603
603
 
604
604
  objBST.addMany(
@@ -614,7 +614,7 @@ describe('BST operations test recursively', () => {
614
614
  expect(objBST.has(6)).toBe(true);
615
615
 
616
616
  const node6 = objBST.getNode(6);
617
- expect(objBST.get(6)).toEqual({key: 6, keyA: 6});
617
+ expect(objBST.get(6)).toEqual({ key: 6, keyA: 6 });
618
618
  expect(node6 && objBST.getHeight(node6)).toBe(2);
619
619
  expect(node6 && objBST.getDepth(node6)).toBe(3);
620
620
 
@@ -628,7 +628,7 @@ describe('BST operations test recursively', () => {
628
628
  expect(leftMost?.key).toBe(1);
629
629
 
630
630
  const node15 = objBST.getNode(15);
631
- expect(node15?.value).toEqual({key: 15, keyA: 15});
631
+ expect(node15?.value).toEqual({ key: 15, keyA: 15 });
632
632
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
633
633
  expect(minNodeBySpecificNode?.key).toBe(12);
634
634
 
@@ -652,7 +652,7 @@ describe('BST operations test recursively', () => {
652
652
  objBST.perfectlyBalance();
653
653
  expect(objBST.isPerfectlyBalanced()).toBe(true);
654
654
 
655
- const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
655
+ const bfsNodesAfterBalanced: BSTNode<{ key: number; keyA: number }>[] = [];
656
656
  objBST.bfs(node => bfsNodesAfterBalanced.push(node));
657
657
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
658
658
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
@@ -777,7 +777,7 @@ describe('BST operations test recursively', () => {
777
777
  expect(bfsIDs[1]).toBe(12);
778
778
  expect(bfsIDs[2]).toBe(16);
779
779
 
780
- const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
780
+ const bfsNodes: BSTNode<{ key: number; keyA: number }>[] = [];
781
781
  objBST.bfs(node => bfsNodes.push(node));
782
782
  expect(bfsNodes[0].key).toBe(2);
783
783
  expect(bfsNodes[1].key).toBe(12);
@@ -843,7 +843,11 @@ describe('BST Performance test', function () {
843
843
  bst.addMany([4, 2, 6, 1, 3, 5, 7]);
844
844
  expect(bst.subTreeTraverse(node => node.key, bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
845
845
  expect(bst.subTreeTraverse(node => node.key, bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
846
- expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.ITERATIVE, true)).toEqual([6, 5, 7]);
847
- expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.RECURSIVE, true)).toEqual([6, 5, 7]);
846
+ expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.ITERATIVE, true)).toEqual([
847
+ 6, 5, 7
848
+ ]);
849
+ expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.RECURSIVE, true)).toEqual([
850
+ 6, 5, 7
851
+ ]);
848
852
  });
849
853
  });
@@ -1,4 +1,4 @@
1
- import {AVLTree, BST} from '../../../../src';
1
+ import { AVLTree, BST } from '../../../../src';
2
2
 
3
3
  describe('Overall BinaryTree Test', () => {
4
4
  it('should perform various operations on BinaryTree', () => {
@@ -29,27 +29,27 @@ describe('Overall BinaryTree Test', () => {
29
29
  bfsIDs[0] === 11; // true
30
30
  expect(bfsIDs[0]).toBe(11);
31
31
 
32
- const objBST = new BST<{key: number; keyA: number}>();
33
- objBST.add(11, {key: 11, keyA: 11});
34
- objBST.add(3, {key: 3, keyA: 3});
32
+ const objBST = new BST<{ key: number; keyA: number }>();
33
+ objBST.add(11, { key: 11, keyA: 11 });
34
+ objBST.add(3, { key: 3, keyA: 3 });
35
35
 
36
36
  objBST.addMany(
37
37
  [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5],
38
38
  [
39
- {key: 15, keyA: 15},
40
- {key: 1, keyA: 1},
41
- {key: 8, keyA: 8},
42
- {key: 13, keyA: 13},
43
- {key: 16, keyA: 16},
44
- {key: 2, keyA: 2},
45
- {key: 6, keyA: 6},
46
- {key: 9, keyA: 9},
47
- {key: 12, keyA: 12},
48
- {key: 14, keyA: 14},
49
- {key: 4, keyA: 4},
50
- {key: 7, keyA: 7},
51
- {key: 10, keyA: 10},
52
- {key: 5, keyA: 5}
39
+ { key: 15, keyA: 15 },
40
+ { key: 1, keyA: 1 },
41
+ { key: 8, keyA: 8 },
42
+ { key: 13, keyA: 13 },
43
+ { key: 16, keyA: 16 },
44
+ { key: 2, keyA: 2 },
45
+ { key: 6, keyA: 6 },
46
+ { key: 9, keyA: 9 },
47
+ { key: 12, keyA: 12 },
48
+ { key: 14, keyA: 14 },
49
+ { key: 4, keyA: 4 },
50
+ { key: 7, keyA: 7 },
51
+ { key: 10, keyA: 10 },
52
+ { key: 5, keyA: 5 }
53
53
  ]
54
54
  );
55
55
 
@@ -1,7 +1,7 @@
1
- import {IterationType, RBTNColor, RedBlackTree, RedBlackTreeNode} from '../../../../src';
2
- import {getRandomInt, getRandomIntArray, magnitude} from '../../../utils';
3
- import {isDebugTest} from '../../../config';
4
- import {OrderedMap} from 'js-sdsl';
1
+ import { IterationType, RBTNColor, RedBlackTree, RedBlackTreeNode } from '../../../../src';
2
+ import { getRandomInt, getRandomIntArray, magnitude } from '../../../utils';
3
+ import { isDebugTest } from '../../../config';
4
+ import { OrderedMap } from 'js-sdsl';
5
5
 
6
6
  const isDebug = isDebugTest;
7
7
 
@@ -13,7 +13,7 @@ describe('RedBlackTree', () => {
13
13
  });
14
14
 
15
15
  describe('add and getNode', () => {
16
- test('should add and find a node in the tree', () => {
16
+ it('should add and find a node in the tree', () => {
17
17
  tree.add(10);
18
18
  tree.add(20);
19
19
  tree.add(5);
@@ -24,7 +24,7 @@ describe('RedBlackTree', () => {
24
24
  expect(tree.getNode(15)).toBe(undefined);
25
25
  });
26
26
 
27
- test('should add and find nodes with negative keys', () => {
27
+ it('should add and find nodes with negative keys', () => {
28
28
  tree.add(-10);
29
29
  tree.add(-20);
30
30
 
@@ -34,7 +34,7 @@ describe('RedBlackTree', () => {
34
34
  });
35
35
 
36
36
  describe('deleteNode', () => {
37
- test('should delete a node from the tree', () => {
37
+ it('should delete a node from the tree', () => {
38
38
  tree.add(10);
39
39
  tree.add(20);
40
40
  tree.add(5);
@@ -43,7 +43,7 @@ describe('RedBlackTree', () => {
43
43
  expect(tree.getNode(20)).toBe(undefined);
44
44
  });
45
45
 
46
- test('should handle deleting a non-existent node', () => {
46
+ it('should handle deleting a non-existent node', () => {
47
47
  tree.add(10);
48
48
  tree.add(20);
49
49
  tree.add(5);
@@ -54,7 +54,7 @@ describe('RedBlackTree', () => {
54
54
  });
55
55
 
56
56
  describe('minimum', () => {
57
- test('should find the minimum node in the tree', () => {
57
+ it('should find the minimum node in the tree', () => {
58
58
  tree.add(10);
59
59
  tree.add(20);
60
60
  tree.add(5);
@@ -65,14 +65,14 @@ describe('RedBlackTree', () => {
65
65
  expect(minNode?.key).toBe(3);
66
66
  });
67
67
 
68
- test('should handle an empty tree', () => {
68
+ it('should handle an empty tree', () => {
69
69
  const minNode = tree.getLeftMost(tree.root);
70
70
  expect(minNode).toBe(tree.NIL);
71
71
  });
72
72
  });
73
73
 
74
74
  describe('getRightMost', () => {
75
- test('should find the getRightMost node in the tree', () => {
75
+ it('should find the getRightMost node in the tree', () => {
76
76
  tree.add(10);
77
77
  tree.add(20);
78
78
  tree.add(5);
@@ -83,14 +83,14 @@ describe('RedBlackTree', () => {
83
83
  expect(maxNode?.key).toBe(25);
84
84
  });
85
85
 
86
- test('should handle an empty tree', () => {
86
+ it('should handle an empty tree', () => {
87
87
  const maxNode = tree.getRightMost(tree.root);
88
88
  expect(maxNode).toBe(tree.NIL);
89
89
  });
90
90
  });
91
91
 
92
92
  describe('getSuccessor', () => {
93
- test('should find the getSuccessor of a node', () => {
93
+ it('should find the getSuccessor of a node', () => {
94
94
  tree.add(10);
95
95
  tree.add(20);
96
96
  tree.add(5);
@@ -103,7 +103,7 @@ describe('RedBlackTree', () => {
103
103
  expect(successorNode?.key).toBe(20);
104
104
  });
105
105
 
106
- test('should handle a node with no getSuccessor', () => {
106
+ it('should handle a node with no getSuccessor', () => {
107
107
  tree.add(10);
108
108
  tree.add(5);
109
109
 
@@ -115,7 +115,7 @@ describe('RedBlackTree', () => {
115
115
  });
116
116
 
117
117
  describe('getPredecessor', () => {
118
- test('should find the getPredecessor of a node', () => {
118
+ it('should find the getPredecessor of a node', () => {
119
119
  tree.add(10);
120
120
  tree.add(20);
121
121
  tree.add(5);
@@ -128,7 +128,7 @@ describe('RedBlackTree', () => {
128
128
  expect(predecessorNode?.key).toBe(15);
129
129
  });
130
130
 
131
- test('should handle a node with no getPredecessor', () => {
131
+ it('should handle a node with no getPredecessor', () => {
132
132
  tree.add(10);
133
133
  tree.add(20);
134
134
 
@@ -438,12 +438,12 @@ describe('RedBlackTree', () => {
438
438
  expect(tree.size).toBe(51);
439
439
  expect(tree.isBST()).toBe(true);
440
440
  expect(tree.dfs(n => n.key, 'in', tree.root, IterationType.ITERATIVE)).toEqual([
441
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
442
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
441
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
442
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
443
443
  ]);
444
444
  expect(tree.dfs(n => n.key, 'in', tree.root, IterationType.RECURSIVE)).toEqual([
445
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
446
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
445
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
446
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
447
447
  ]);
448
448
  });
449
449
 
@@ -468,7 +468,7 @@ describe('RedBlackTree', () => {
468
468
  // TODO there is a bug when dfs the tree with NIL node
469
469
  // expect(tree.isBST()).toBe(true);
470
470
  });
471
- const {HUNDRED_THOUSAND} = magnitude;
471
+ const { HUNDRED_THOUSAND } = magnitude;
472
472
  const arr = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSAND, true);
473
473
  const competitor = new OrderedMap<number, number>();
474
474
 
@@ -1,4 +1,4 @@
1
- import {SegmentTree} from '../../../../src';
1
+ import { SegmentTree } from '../../../../src';
2
2
 
3
3
  describe('SegmentTree', () => {
4
4
  let segmentTree: SegmentTree;
@@ -1,5 +1,5 @@
1
- import {CP, IterationType, TreeMultimap, TreeMultimapNode} from '../../../../src';
2
- import {isDebugTest} from '../../../config';
1
+ import { CP, IterationType, TreeMultimap, TreeMultimapNode } from '../../../../src';
2
+ import { isDebugTest } from '../../../config';
3
3
 
4
4
  const isDebug = isDebugTest;
5
5
 
@@ -207,25 +207,25 @@ describe('TreeMultimap operations test', () => {
207
207
  });
208
208
 
209
209
  it('should perform various operations on a Binary Search Tree with object values', () => {
210
- const objTreeMultimap = new TreeMultimap<{key: number; keyA: number}>();
210
+ const objTreeMultimap = new TreeMultimap<{ key: number; keyA: number }>();
211
211
  expect(objTreeMultimap).toBeInstanceOf(TreeMultimap);
212
- objTreeMultimap.add(11, {key: 11, keyA: 11});
213
- objTreeMultimap.add(3, {key: 3, keyA: 3});
212
+ objTreeMultimap.add(11, { key: 11, keyA: 11 });
213
+ objTreeMultimap.add(3, { key: 3, keyA: 3 });
214
214
  const values = [
215
- {key: 15, keyA: 15},
216
- {key: 1, keyA: 1},
217
- {key: 8, keyA: 8},
218
- {key: 13, keyA: 13},
219
- {key: 16, keyA: 16},
220
- {key: 2, keyA: 2},
221
- {key: 6, keyA: 6},
222
- {key: 9, keyA: 9},
223
- {key: 12, keyA: 12},
224
- {key: 14, keyA: 14},
225
- {key: 4, keyA: 4},
226
- {key: 7, keyA: 7},
227
- {key: 10, keyA: 10},
228
- {key: 5, keyA: 5}
215
+ { key: 15, keyA: 15 },
216
+ { key: 1, keyA: 1 },
217
+ { key: 8, keyA: 8 },
218
+ { key: 13, keyA: 13 },
219
+ { key: 16, keyA: 16 },
220
+ { key: 2, keyA: 2 },
221
+ { key: 6, keyA: 6 },
222
+ { key: 9, keyA: 9 },
223
+ { key: 12, keyA: 12 },
224
+ { key: 14, keyA: 14 },
225
+ { key: 4, keyA: 4 },
226
+ { key: 7, keyA: 7 },
227
+ { key: 10, keyA: 10 },
228
+ { key: 5, keyA: 5 }
229
229
  ];
230
230
 
231
231
  objTreeMultimap.addMany(
@@ -245,7 +245,7 @@ describe('TreeMultimap operations test', () => {
245
245
 
246
246
  describe('TreeMultimap operations test recursively', () => {
247
247
  it('should perform various operations on a Binary Search Tree with numeric values', () => {
248
- const treeMultimap = new TreeMultimap({iterationType: IterationType.RECURSIVE});
248
+ const treeMultimap = new TreeMultimap({ iterationType: IterationType.RECURSIVE });
249
249
 
250
250
  expect(treeMultimap instanceof TreeMultimap);
251
251
  treeMultimap.add(11, 11);
@@ -447,25 +447,25 @@ describe('TreeMultimap operations test recursively', () => {
447
447
  });
448
448
 
449
449
  it('should perform various operations on a Binary Search Tree with object values', () => {
450
- const objTreeMultimap = new TreeMultimap<{key: number; keyA: number}>();
450
+ const objTreeMultimap = new TreeMultimap<{ key: number; keyA: number }>();
451
451
  expect(objTreeMultimap).toBeInstanceOf(TreeMultimap);
452
- objTreeMultimap.add(11, {key: 11, keyA: 11});
453
- objTreeMultimap.add(3, {key: 3, keyA: 3});
452
+ objTreeMultimap.add(11, { key: 11, keyA: 11 });
453
+ objTreeMultimap.add(3, { key: 3, keyA: 3 });
454
454
  const values = [
455
- {key: 15, keyA: 15},
456
- {key: 1, keyA: 1},
457
- {key: 8, keyA: 8},
458
- {key: 13, keyA: 13},
459
- {key: 16, keyA: 16},
460
- {key: 2, keyA: 2},
461
- {key: 6, keyA: 6},
462
- {key: 9, keyA: 9},
463
- {key: 12, keyA: 12},
464
- {key: 14, keyA: 14},
465
- {key: 4, keyA: 4},
466
- {key: 7, keyA: 7},
467
- {key: 10, keyA: 10},
468
- {key: 5, keyA: 5}
455
+ { key: 15, keyA: 15 },
456
+ { key: 1, keyA: 1 },
457
+ { key: 8, keyA: 8 },
458
+ { key: 13, keyA: 13 },
459
+ { key: 16, keyA: 16 },
460
+ { key: 2, keyA: 2 },
461
+ { key: 6, keyA: 6 },
462
+ { key: 9, keyA: 9 },
463
+ { key: 12, keyA: 12 },
464
+ { key: 14, keyA: 14 },
465
+ { key: 4, keyA: 4 },
466
+ { key: 7, keyA: 7 },
467
+ { key: 10, keyA: 10 },
468
+ { key: 5, keyA: 5 }
469
469
  ];
470
470
 
471
471
  objTreeMultimap.addMany(