data-structure-typed 1.50.7 → 1.50.9

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 (69) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +73 -67
  3. package/benchmark/report.html +1 -37
  4. package/benchmark/report.json +15 -393
  5. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +14 -3
  6. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +17 -6
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js +33 -34
  10. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/bst.d.ts +22 -3
  12. package/dist/cjs/data-structures/binary-tree/bst.js +78 -39
  13. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +5 -5
  15. package/dist/cjs/data-structures/binary-tree/rb-tree.js +47 -50
  16. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +40 -23
  18. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +44 -28
  19. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  20. package/dist/cjs/data-structures/heap/heap.d.ts +1 -1
  21. package/dist/cjs/data-structures/heap/heap.js +5 -5
  22. package/dist/cjs/types/common.d.ts +6 -29
  23. package/dist/cjs/types/common.js +0 -40
  24. package/dist/cjs/types/common.js.map +1 -1
  25. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +1 -4
  26. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js +0 -6
  27. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +1 -1
  28. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +14 -3
  29. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +17 -6
  30. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
  31. package/dist/mjs/data-structures/binary-tree/binary-tree.js +33 -34
  32. package/dist/mjs/data-structures/binary-tree/bst.d.ts +22 -3
  33. package/dist/mjs/data-structures/binary-tree/bst.js +78 -39
  34. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +5 -5
  35. package/dist/mjs/data-structures/binary-tree/rb-tree.js +47 -50
  36. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +40 -23
  37. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +44 -28
  38. package/dist/mjs/data-structures/heap/heap.d.ts +1 -1
  39. package/dist/mjs/data-structures/heap/heap.js +5 -5
  40. package/dist/mjs/types/common.d.ts +6 -29
  41. package/dist/mjs/types/common.js +1 -39
  42. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +1 -4
  43. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +1 -5
  44. package/dist/umd/data-structure-typed.js +212 -206
  45. package/dist/umd/data-structure-typed.min.js +2 -2
  46. package/dist/umd/data-structure-typed.min.js.map +1 -1
  47. package/package.json +6 -6
  48. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +20 -7
  49. package/src/data-structures/binary-tree/binary-tree.ts +54 -45
  50. package/src/data-structures/binary-tree/bst.ts +86 -42
  51. package/src/data-structures/binary-tree/rb-tree.ts +49 -49
  52. package/src/data-structures/binary-tree/tree-multi-map.ts +48 -29
  53. package/src/data-structures/heap/heap.ts +5 -5
  54. package/src/types/common.ts +6 -30
  55. package/src/types/data-structures/binary-tree/rb-tree.ts +1 -1
  56. package/test/integration/all-in-one.test.ts +4 -4
  57. package/test/integration/avl-tree.test.ts +1 -1
  58. package/test/integration/bst.test.ts +2 -2
  59. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +20 -15
  60. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +1 -1
  61. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +13 -22
  62. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +15 -23
  63. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +8 -8
  64. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +127 -74
  65. package/test/unit/data-structures/binary-tree/bst.test.ts +20 -20
  66. package/test/unit/data-structures/binary-tree/overall.test.ts +7 -7
  67. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +31 -26
  68. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +26 -34
  69. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +3 -3
@@ -1,4 +1,4 @@
1
- import { BinaryTree, BinaryTreeNode, FamilyPosition, IterationType } from '../../../../src';
1
+ import { BinaryTree, BinaryTreeNode } from '../../../../src';
2
2
  import { getRandomIntArray } from '../../../utils';
3
3
  // import { isDebugTest } from '../../../config';
4
4
 
@@ -81,7 +81,7 @@ describe('BinaryTreeNode', () => {
81
81
  root.right = rightChild;
82
82
 
83
83
  expect(rightChild.familyPosition).toBe('RIGHT');
84
- expect(isolated.familyPosition).toBe(FamilyPosition.ISOLATED);
84
+ expect(isolated.familyPosition).toBe('ISOLATED');
85
85
  expect(root.familyPosition).toBe('ROOT');
86
86
  });
87
87
  });
@@ -104,7 +104,7 @@ describe('BinaryTree', () => {
104
104
  });
105
105
 
106
106
  it('should delete nodes', () => {
107
- expect(tree.getHeight(tree.root, IterationType.ITERATIVE)).toBe(-1);
107
+ expect(tree.getHeight(tree.root, 'ITERATIVE')).toBe(-1);
108
108
  expect(tree.getMinHeight()).toBe(-1);
109
109
  const node1 = tree.createNode(1);
110
110
  tree.add(node1);
@@ -132,7 +132,7 @@ describe('BinaryTree', () => {
132
132
  const result = tree.delete(node1);
133
133
  expect(result).toHaveLength(1);
134
134
  expect(tree.size).toBe(4);
135
- expect(tree.getMinHeight(tree.root, IterationType.RECURSIVE)).toBe(1);
135
+ expect(tree.getMinHeight(tree.root, 'RECURSIVE')).toBe(1);
136
136
  }
137
137
  });
138
138
 
@@ -171,16 +171,25 @@ describe('BinaryTree', () => {
171
171
  expect(cloned.root?.right?.key).toBe(6);
172
172
  expect(cloned.root?.right?.left?.key).toBe(3);
173
173
  expect(cloned.root?.right?.right).toBe(null);
174
- expect(cloned.dfs(node => node.key, 'pre', cloned.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
175
- expect(
176
- cloned.dfs(node => (node ? node.key : null), 'pre', cloned.getNode(6), IterationType.ITERATIVE, true)
177
- ).toEqual([6, 3, 7, null]);
178
- expect(
179
- cloned.dfs(node => (node ? node.key : node), 'pre', cloned.getNode(6), IterationType.ITERATIVE, true)
180
- ).toEqual([6, 3, 7, null]);
181
- expect(
182
- cloned.dfs(node => (node ? node.key : null), 'pre', cloned.getNode(6), IterationType.RECURSIVE, true)
183
- ).toEqual([6, 3, 7, null]);
174
+ expect(cloned.dfs(node => node.key, 'PRE', cloned.getNode(6), 'ITERATIVE')).toEqual([6, 3, 7]);
175
+ expect(cloned.dfs(node => (node ? node.key : null), 'PRE', cloned.getNode(6), 'ITERATIVE', true)).toEqual([
176
+ 6,
177
+ 3,
178
+ 7,
179
+ null
180
+ ]);
181
+ expect(cloned.dfs(node => (node ? node.key : node), 'PRE', cloned.getNode(6), 'ITERATIVE', true)).toEqual([
182
+ 6,
183
+ 3,
184
+ 7,
185
+ null
186
+ ]);
187
+ expect(cloned.dfs(node => (node ? node.key : null), 'PRE', cloned.getNode(6), 'RECURSIVE', true)).toEqual([
188
+ 6,
189
+ 3,
190
+ 7,
191
+ null
192
+ ]);
184
193
  cloned.delete(6);
185
194
  cloned.delete(3);
186
195
  cloned.delete(7);
@@ -234,9 +243,9 @@ describe('BinaryTree', () => {
234
243
  tree.add(4);
235
244
  tree.add(2);
236
245
  expect(tree.getHeight()).toBe(1);
237
- tree.iterationType = IterationType.RECURSIVE;
246
+ tree.iterationType = 'RECURSIVE';
238
247
  expect(tree.getHeight()).toBe(1);
239
- tree.iterationType = IterationType.ITERATIVE;
248
+ tree.iterationType = 'ITERATIVE';
240
249
 
241
250
  tree.add(6);
242
251
  tree.add(1);
@@ -252,9 +261,9 @@ describe('BinaryTree', () => {
252
261
  it('should getLeftMost', () => {
253
262
  tree.addMany([4, 2, 6, 1, 3, 5, 7]);
254
263
 
255
- const leftMost = tree.getLeftMost(tree.root, IterationType.RECURSIVE);
264
+ const leftMost = tree.getLeftMost(tree.root, 'RECURSIVE');
256
265
  expect(leftMost?.key).toEqual(1);
257
- const rightMost = tree.getRightMost(tree.root, IterationType.RECURSIVE);
266
+ const rightMost = tree.getRightMost(tree.root, 'RECURSIVE');
258
267
  expect(rightMost?.key).toEqual(7);
259
268
  });
260
269
 
@@ -270,37 +279,37 @@ describe('BinaryTree', () => {
270
279
  new BinaryTreeNode(4, 4)
271
280
  ]);
272
281
 
273
- expect(tree.isBST(tree.getNode(4), IterationType.RECURSIVE)).toBe(true);
274
- expect(tree.isBST(tree.getNode(4), IterationType.ITERATIVE)).toBe(true);
282
+ expect(tree.isBST(tree.getNode(4), 'RECURSIVE')).toBe(true);
283
+ expect(tree.isBST(tree.getNode(4), 'ITERATIVE')).toBe(true);
275
284
  });
276
285
 
277
286
  it('should isSubtreeBST', () => {
278
287
  tree.addMany([4, 2, 6, 1, 3, 5, 7, 4]);
279
288
 
280
- expect(tree.isBST(tree.getNode(4), IterationType.RECURSIVE)).toBe(true);
281
- expect(tree.isBST(tree.getNode(4), IterationType.ITERATIVE)).toBe(true);
289
+ expect(tree.isBST(tree.getNode(4), 'RECURSIVE')).toBe(true);
290
+ expect(tree.isBST(tree.getNode(4), 'ITERATIVE')).toBe(true);
282
291
  expect(tree.getNodes(2, undefined, false, null)).toEqual([]);
283
292
  expect(tree.getNodes(tree.getNodeByKey(2), undefined, false, tree.root)).toEqual([tree.getNodeByKey(2)]);
284
293
  });
285
294
 
286
295
  it('should sub tree traverse', () => {
287
296
  tree.addMany([4, 2, 6, null, 1, 3, null, 5, null, 7]);
288
- expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
289
- expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.ITERATIVE, false)).toEqual([6, 3, 7]);
290
- expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 3, 7]);
291
- expect(tree.dfs(node => (node ? node.key : null), 'pre', tree.getNode(6), IterationType.ITERATIVE, true)).toEqual([
297
+ expect(tree.dfs(node => node.key, 'PRE', tree.getNode(6), 'ITERATIVE')).toEqual([6, 3, 7]);
298
+ expect(tree.dfs(node => node.key, 'PRE', tree.getNode(6), 'ITERATIVE', false)).toEqual([6, 3, 7]);
299
+ expect(tree.dfs(node => node.key, 'PRE', tree.getNode(6), 'RECURSIVE')).toEqual([6, 3, 7]);
300
+ expect(tree.dfs(node => (node ? node.key : null), 'PRE', tree.getNode(6), 'ITERATIVE', true)).toEqual([
292
301
  6,
293
302
  3,
294
303
  7,
295
304
  null
296
305
  ]);
297
- expect(tree.dfs(node => (node ? node.key : node), 'pre', tree.getNode(6), IterationType.ITERATIVE, true)).toEqual([
306
+ expect(tree.dfs(node => (node ? node.key : node), 'PRE', tree.getNode(6), 'ITERATIVE', true)).toEqual([
298
307
  6,
299
308
  3,
300
309
  7,
301
310
  null
302
311
  ]);
303
- expect(tree.dfs(node => (node ? node.key : null), 'pre', tree.getNode(6), IterationType.RECURSIVE, true)).toEqual([
312
+ expect(tree.dfs(node => (node ? node.key : null), 'PRE', tree.getNode(6), 'RECURSIVE', true)).toEqual([
304
313
  6,
305
314
  3,
306
315
  7,
@@ -353,36 +362,36 @@ describe('BinaryTree Morris Traversal', () => {
353
362
  tree.add(5);
354
363
  it('should perform in-order Morris traversal correctly as dfs traversal', () => {
355
364
  // Perform in-order Morris traversal
356
- const result = tree.morris(node => node.key, 'in');
365
+ const result = tree.morris(node => node.key, 'IN');
357
366
 
358
367
  // Expected in-order traversal result
359
368
  const expected = [4, 2, 5, 1, 3];
360
369
 
361
370
  expect(result).toEqual(expected);
362
- expect(tree.dfs(node => node.key, 'in')).toEqual(expected);
363
- expect(tree.dfs(node => node.key, 'in', tree.root, IterationType.RECURSIVE)).toEqual(expected);
371
+ expect(tree.dfs(node => node.key, 'IN')).toEqual(expected);
372
+ expect(tree.dfs(node => node.key, 'IN', tree.root, 'RECURSIVE')).toEqual(expected);
364
373
  });
365
374
 
366
375
  it('should perform pre-order Morris traversal correctly as dfs traversal', () => {
367
376
  // Perform pre-order Morris traversal
368
- const result = tree.morris(node => node.key, 'pre');
377
+ const result = tree.morris(node => node.key, 'PRE');
369
378
 
370
379
  // Expected pre-order traversal result
371
380
  const expected = [1, 2, 4, 5, 3];
372
381
 
373
382
  expect(result).toEqual(expected);
374
- expect(tree.dfs(node => node.key, 'pre')).toEqual(expected);
383
+ expect(tree.dfs(node => node.key, 'PRE')).toEqual(expected);
375
384
  });
376
385
 
377
386
  it('should perform post-order Morris traversal correctly as dfs traversal', () => {
378
387
  // Perform post-order Morris traversal
379
- const result = tree.morris(node => node.key, 'post');
388
+ const result = tree.morris(node => node.key, 'POST');
380
389
 
381
390
  // Expected post-order traversal result
382
391
  const expected = [4, 5, 2, 3, 1];
383
392
 
384
393
  expect(result).toEqual([4, 5, 2, 3, 1]);
385
- expect(tree.dfs(node => node.key, 'post')).toEqual(expected);
394
+ expect(tree.dfs(node => node.key, 'POST')).toEqual(expected);
386
395
  });
387
396
 
388
397
  it('after morris traversals should the structure of the tree be correct', () => {
@@ -399,57 +408,101 @@ describe('BinaryTree traversals', () => {
399
408
 
400
409
  const arr = [35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55];
401
410
  tree.refill(arr);
402
- expect(
403
- tree.bfs(node => node, tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))
404
- ).toEqual([35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55]);
405
- expect(
406
- tree.bfs(node => node, tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))
407
- ).toEqual([35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55]);
408
- expect(
409
- tree.bfs(node => node, tree.root, IterationType.ITERATIVE).map(node => (node === null ? null : node.key))
410
- ).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
411
- expect(
412
- tree.bfs(node => node, tree.root, IterationType.RECURSIVE).map(node => (node === null ? null : node.key))
413
- ).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
414
-
415
- expect(tree.dfs(node => node.key, 'pre')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
416
- expect(tree.dfs(node => node.key, 'pre', tree.root, IterationType.RECURSIVE)).toEqual([
417
- 35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55
411
+ expect(tree.bfs(node => node, tree.root, 'ITERATIVE', true).map(node => (node ? node.key : null))).toEqual([
412
+ 35,
413
+ 20,
414
+ 40,
415
+ 15,
416
+ 29,
417
+ null,
418
+ 50,
419
+ null,
420
+ 16,
421
+ 28,
422
+ 30,
423
+ 45,
424
+ 55
418
425
  ]);
419
- expect(
420
- tree.dfs(node => node, 'pre', tree.root, IterationType.ITERATIVE, true).map(node => (node ? node.key : null))
421
- ).toEqual([35, 20, 15, null, 16, 29, 28, 30, 40, null, 50, 45, 55]);
422
- expect(
423
- tree.dfs(node => node, 'pre', tree.root, IterationType.RECURSIVE, true).map(node => (node ? node.key : null))
424
- ).toEqual([35, 20, 15, null, 16, 29, 28, 30, 40, null, 50, 45, 55]);
425
-
426
- expect(tree.dfs(node => node.key, 'in')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
427
- expect(tree.dfs(node => node.key, 'post')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
428
- expect(tree.dfs(node => node.key, 'post', tree.root, IterationType.RECURSIVE)).toEqual([
429
- 16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35
426
+ expect(tree.bfs(node => node, tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
427
+ 35,
428
+ 20,
429
+ 40,
430
+ 15,
431
+ 29,
432
+ null,
433
+ 50,
434
+ null,
435
+ 16,
436
+ 28,
437
+ 30,
438
+ 45,
439
+ 55
430
440
  ]);
431
- expect(tree.bfs(node => node.key, tree.root, IterationType.RECURSIVE)).toEqual([
441
+ expect(tree.bfs(node => node, tree.root, 'ITERATIVE').map(node => (node === null ? null : node.key))).toEqual([
432
442
  35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
433
443
  ]);
434
- expect(tree.bfs(node => node.key, tree.root, IterationType.ITERATIVE)).toEqual([
444
+ expect(tree.bfs(node => node, tree.root, 'RECURSIVE').map(node => (node === null ? null : node.key))).toEqual([
435
445
  35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
436
446
  ]);
437
447
 
448
+ expect(tree.dfs(node => node.key, 'PRE')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
449
+ expect(tree.dfs(node => node.key, 'PRE', tree.root, 'RECURSIVE')).toEqual([
450
+ 35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55
451
+ ]);
452
+ expect(tree.dfs(node => node, 'PRE', tree.root, 'ITERATIVE', true).map(node => (node ? node.key : null))).toEqual([
453
+ 35,
454
+ 20,
455
+ 15,
456
+ null,
457
+ 16,
458
+ 29,
459
+ 28,
460
+ 30,
461
+ 40,
462
+ null,
463
+ 50,
464
+ 45,
465
+ 55
466
+ ]);
467
+ expect(tree.dfs(node => node, 'PRE', tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
468
+ 35,
469
+ 20,
470
+ 15,
471
+ null,
472
+ 16,
473
+ 29,
474
+ 28,
475
+ 30,
476
+ 40,
477
+ null,
478
+ 50,
479
+ 45,
480
+ 55
481
+ ]);
482
+
483
+ expect(tree.dfs(node => node.key, 'IN')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
484
+ expect(tree.dfs(node => node.key, 'POST')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
485
+ expect(tree.dfs(node => node.key, 'POST', tree.root, 'RECURSIVE')).toEqual([
486
+ 16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35
487
+ ]);
488
+ expect(tree.bfs(node => node.key, tree.root, 'RECURSIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
489
+ expect(tree.bfs(node => node.key, tree.root, 'ITERATIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
490
+
438
491
  expect(tree.listLevels(node => node.key)).toEqual([[35], [20, 40], [15, 29, 50], [16, 28, 30, 45, 55]]);
439
492
 
440
- expect(tree.listLevels(node => node.key, tree.root, IterationType.RECURSIVE)).toEqual([
493
+ expect(tree.listLevels(node => node.key, tree.root, 'RECURSIVE')).toEqual([
441
494
  [35],
442
495
  [20, 40],
443
496
  [15, 29, 50],
444
497
  [16, 28, 30, 45, 55]
445
498
  ]);
446
- expect(tree.listLevels(node => (node ? node.key : null), tree.root, IterationType.ITERATIVE, true)).toEqual([
499
+ expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'ITERATIVE', true)).toEqual([
447
500
  [35],
448
501
  [20, 40],
449
502
  [15, 29, null, 50],
450
503
  [null, 16, 28, 30, 45, 55]
451
504
  ]);
452
- expect(tree.listLevels(node => (node ? node.key : null), tree.root, IterationType.RECURSIVE, true)).toEqual([
505
+ expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'RECURSIVE', true)).toEqual([
453
506
  [35],
454
507
  [20, 40],
455
508
  [15, 29, null, 50],
@@ -461,7 +514,7 @@ describe('BinaryTree', () => {
461
514
  let tree: BinaryTree<number, string>;
462
515
 
463
516
  beforeEach(() => {
464
- tree = new BinaryTree<number, string>([], { iterationType: IterationType.RECURSIVE });
517
+ tree = new BinaryTree<number, string>([], { iterationType: 'RECURSIVE' });
465
518
  });
466
519
 
467
520
  afterEach(() => {
@@ -533,8 +586,8 @@ describe('BinaryTree', () => {
533
586
  tree.add([7, 'C']);
534
587
 
535
588
  expect(tree.getHeight()).toBe(1);
536
- expect(tree.getHeight(undefined, IterationType.RECURSIVE)).toBe(1);
537
- expect(tree.getMinHeight(undefined, IterationType.RECURSIVE)).toBe(1);
589
+ expect(tree.getHeight(undefined, 'RECURSIVE')).toBe(1);
590
+ expect(tree.getMinHeight(undefined, 'RECURSIVE')).toBe(1);
538
591
  });
539
592
 
540
593
  it('should check if the tree is a binary search tree', () => {
@@ -604,7 +657,7 @@ describe('BinaryTree', () => {
604
657
  expect(nodes.length).toBe(1);
605
658
  expect(nodes[0].key).toBe(3);
606
659
 
607
- const nodesRec = tree.getNodes('B', node => node.value, false, tree.root, IterationType.RECURSIVE);
660
+ const nodesRec = tree.getNodes('B', node => node.value, false, tree.root, 'RECURSIVE');
608
661
 
609
662
  expect(nodesRec.length).toBe(1);
610
663
  expect(nodesRec[0].key).toBe(3);
@@ -615,19 +668,19 @@ describe('BinaryTree', () => {
615
668
  tree.add([3, 'B']);
616
669
  tree.add([7, 'C']);
617
670
 
618
- tree.iterationType = IterationType.ITERATIVE;
671
+ tree.iterationType = 'ITERATIVE';
619
672
  expect([...tree]).toEqual([
620
673
  [3, 'B'],
621
674
  [5, 'A'],
622
675
  [7, 'C']
623
676
  ]);
624
- tree.iterationType = IterationType.RECURSIVE;
677
+ tree.iterationType = 'RECURSIVE';
625
678
  expect([...tree]).toEqual([
626
679
  [3, 'B'],
627
680
  [5, 'A'],
628
681
  [7, 'C']
629
682
  ]);
630
- tree.iterationType = IterationType.ITERATIVE;
683
+ tree.iterationType = 'ITERATIVE';
631
684
 
632
685
  const result = tree.morris();
633
686
  expect(result).toEqual([3, 5, 7]);
@@ -1,4 +1,4 @@
1
- import { BinaryTreeNode, BST, BSTNode, BSTVariant, CP, IterationType } from '../../../../src';
1
+ import { BinaryTreeNode, BST, BSTNode } from '../../../../src';
2
2
  import { isDebugTest } from '../../../config';
3
3
 
4
4
  const isDebug = isDebugTest;
@@ -54,11 +54,11 @@ describe('BST operations test', () => {
54
54
  expect(minNodeBySpecificNode?.key).toBe(12);
55
55
 
56
56
  let subTreeSum = 0;
57
- node15 && bst.dfs(node => (subTreeSum += node.key), 'pre', 15);
57
+ node15 && bst.dfs(node => (subTreeSum += node.key), 'PRE', 15);
58
58
  expect(subTreeSum).toBe(70);
59
59
 
60
60
  let lesserSum = 0;
61
- bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
61
+ bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
62
62
  expect(lesserSum).toBe(45);
63
63
 
64
64
  expect(node15).toBeInstanceOf(BSTNode);
@@ -66,7 +66,7 @@ describe('BST operations test', () => {
66
66
  const node11 = bst.getNode(11);
67
67
  expect(node11).toBeInstanceOf(BSTNode);
68
68
 
69
- const dfsInorderNodes = bst.dfs(node => node, 'in');
69
+ const dfsInorderNodes = bst.dfs(node => node, 'IN');
70
70
  expect(dfsInorderNodes[0].key).toBe(1);
71
71
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
72
72
 
@@ -257,11 +257,11 @@ describe('BST operations test', () => {
257
257
  expect(minNodeBySpecificNode?.key).toBe(12);
258
258
 
259
259
  let subTreeSum = 0;
260
- node15 && objBST.dfs(node => (subTreeSum += node.key), 'pre', node15);
260
+ node15 && objBST.dfs(node => (subTreeSum += node.key), 'PRE', node15);
261
261
  expect(subTreeSum).toBe(70);
262
262
 
263
263
  let lesserSum = 0;
264
- objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
264
+ objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
265
265
  expect(lesserSum).toBe(45);
266
266
 
267
267
  expect(node15).toBeInstanceOf(BSTNode);
@@ -269,7 +269,7 @@ describe('BST operations test', () => {
269
269
  const node11 = objBST.getNode(11);
270
270
  expect(node11).toBeInstanceOf(BSTNode);
271
271
 
272
- const dfsInorderNodes = objBST.dfs(node => node, 'in');
272
+ const dfsInorderNodes = objBST.dfs(node => node, 'IN');
273
273
  expect(dfsInorderNodes[0].key).toBe(1);
274
274
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
275
275
 
@@ -411,7 +411,7 @@ describe('BST operations test', () => {
411
411
 
412
412
  describe('BST operations test recursively', () => {
413
413
  it('should perform various operations on a Binary Search Tree with numeric values', () => {
414
- const bst = new BST<number>([], { iterationType: IterationType.RECURSIVE });
414
+ const bst = new BST<number>([], { iterationType: 'RECURSIVE' });
415
415
  expect(bst).toBeInstanceOf(BST);
416
416
  bst.add([11, 11]);
417
417
  bst.add([3, 3]);
@@ -444,11 +444,11 @@ describe('BST operations test recursively', () => {
444
444
  expect(minNodeBySpecificNode?.key).toBe(12);
445
445
 
446
446
  let subTreeSum = 0;
447
- node15 && bst.dfs(node => (subTreeSum += node.key), 'pre', 15);
447
+ node15 && bst.dfs(node => (subTreeSum += node.key), 'PRE', 15);
448
448
  expect(subTreeSum).toBe(70);
449
449
 
450
450
  let lesserSum = 0;
451
- bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
451
+ bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
452
452
  expect(lesserSum).toBe(45);
453
453
 
454
454
  expect(node15).toBeInstanceOf(BSTNode);
@@ -456,7 +456,7 @@ describe('BST operations test recursively', () => {
456
456
  const node11 = bst.getNode(11);
457
457
  expect(node11).toBeInstanceOf(BSTNode);
458
458
 
459
- const dfsInorderNodes = bst.dfs(node => node, 'in');
459
+ const dfsInorderNodes = bst.dfs(node => node, 'IN');
460
460
  expect(dfsInorderNodes[0].key).toBe(1);
461
461
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
462
462
 
@@ -645,11 +645,11 @@ describe('BST operations test recursively', () => {
645
645
  expect(minNodeBySpecificNode?.key).toBe(12);
646
646
 
647
647
  let subTreeSum = 0;
648
- node15 && objBST.dfs(node => (subTreeSum += node.key), 'pre', node15);
648
+ node15 && objBST.dfs(node => (subTreeSum += node.key), 'PRE', node15);
649
649
  expect(subTreeSum).toBe(70);
650
650
 
651
651
  let lesserSum = 0;
652
- objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
652
+ objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
653
653
  expect(lesserSum).toBe(45);
654
654
 
655
655
  expect(node15).toBeInstanceOf(BSTNode);
@@ -657,7 +657,7 @@ describe('BST operations test recursively', () => {
657
657
  const node11 = objBST.getNode(11);
658
658
  expect(node11).toBeInstanceOf(BSTNode);
659
659
 
660
- const dfsInorderNodes = objBST.dfs(node => node, 'in');
660
+ const dfsInorderNodes = objBST.dfs(node => node, 'IN');
661
661
  expect(dfsInorderNodes[0].key).toBe(1);
662
662
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
663
663
 
@@ -869,7 +869,7 @@ describe('BST isBST', function () {
869
869
  });
870
870
 
871
871
  test('isBST when variant is Max', () => {
872
- const bst = new BST<number, number>([1, 2, 3, 9, 8, 5, 6, 7, 4], { variant: BSTVariant.INVERSE });
872
+ const bst = new BST<number, number>([1, 2, 3, 9, 8, 5, 6, 7, 4], { variant: 'INVERSE' });
873
873
  bst.addMany([1, 2, 3, 9, 8, 5, 6, 7, 4]);
874
874
  expect(bst.isBST()).toBe(true);
875
875
  });
@@ -902,7 +902,7 @@ describe('BST Performance test', function () {
902
902
  node => {
903
903
  node.key - 1;
904
904
  },
905
- CP.lt,
905
+ 'LT',
906
906
  inputSize / 2
907
907
  );
908
908
  isDebug && console.log('---lesserOrGreaterTraverse', performance.now() - startL);
@@ -932,10 +932,10 @@ describe('BST Performance test', function () {
932
932
  it('should dfs as sub tree traversal, null should be ignored', () => {
933
933
  const bst = new BST();
934
934
  bst.addMany([4, 2, 6, 1, 3, 5, 7]);
935
- expect(bst.dfs(node => node.key, 'pre', bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
936
- expect(bst.dfs(node => node.key, 'pre', bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
937
- expect(bst.dfs(node => node?.key ?? undefined, 'pre', bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
938
- expect(bst.dfs(node => node?.key ?? undefined, 'pre', bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
935
+ expect(bst.dfs(node => node.key, 'PRE', bst.getNode(6), 'ITERATIVE')).toEqual([6, 5, 7]);
936
+ expect(bst.dfs(node => node.key, 'PRE', bst.getNode(6), 'RECURSIVE')).toEqual([6, 5, 7]);
937
+ expect(bst.dfs(node => node?.key ?? undefined, 'PRE', bst.getNode(6), 'ITERATIVE')).toEqual([6, 5, 7]);
938
+ expect(bst.dfs(node => node?.key ?? undefined, 'PRE', bst.getNode(6), 'RECURSIVE')).toEqual([6, 5, 7]);
939
939
  });
940
940
  });
941
941
 
@@ -1,4 +1,4 @@
1
- import { AVLTree, BST, BSTVariant, IterationType, RedBlackTree, TreeMultiMap } from '../../../../src';
1
+ import { AVLTree, BST, RedBlackTree, TreeMultiMap } from '../../../../src';
2
2
 
3
3
  describe('Overall BinaryTree Test', () => {
4
4
  it('should perform various operations on BinaryTree', () => {
@@ -63,8 +63,8 @@ describe('Overall BinaryTree Test', () => {
63
63
 
64
64
  it('Should clone a BST works fine', () => {
65
65
  const bst = new BST<number>([3, 6, 7, 1, 9], {
66
- iterationType: IterationType.RECURSIVE,
67
- variant: BSTVariant.INVERSE,
66
+ iterationType: 'RECURSIVE',
67
+ variant: 'INVERSE',
68
68
  extractor: key => key
69
69
  });
70
70
  expect(bst.size).toBe(5);
@@ -104,8 +104,8 @@ describe('Overall BinaryTree Test', () => {
104
104
 
105
105
  it('Should clone a AVLTree works fine', () => {
106
106
  const avl = new AVLTree<number>([3, 6, 7, 1, 9], {
107
- iterationType: IterationType.RECURSIVE,
108
- variant: BSTVariant.INVERSE,
107
+ iterationType: 'RECURSIVE',
108
+ variant: 'INVERSE',
109
109
  extractor: key => key
110
110
  });
111
111
  expect(avl.size).toBe(5);
@@ -148,7 +148,7 @@ describe('Overall BinaryTree Test', () => {
148
148
 
149
149
  it('Should clone a TreeMultiMap works fine', () => {
150
150
  const tmm = new TreeMultiMap<number>([3, 6, 7, 1, 9], {
151
- iterationType: IterationType.RECURSIVE,
151
+ iterationType: 'RECURSIVE',
152
152
  extractor: key => key
153
153
  });
154
154
  expect(tmm.size).toBe(5);
@@ -197,7 +197,7 @@ describe('Overall BinaryTree Test', () => {
197
197
 
198
198
  it('Should clone a RedBlackTree works fine', () => {
199
199
  const rbTree = new RedBlackTree<number>([3, 6, 7, 1, 9], {
200
- iterationType: IterationType.RECURSIVE,
200
+ iterationType: 'RECURSIVE',
201
201
  extractor: key => key
202
202
  });
203
203
  expect(rbTree.size).toBe(5);