data-structure-typed 2.2.6 → 2.2.8

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 (72) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/CONTRIBUTING.md +47 -1
  3. package/README.md +19 -8
  4. package/README_CN.md +119 -275
  5. package/benchmark/report.html +1 -1
  6. package/benchmark/report.json +20 -324
  7. package/dist/cjs/index.cjs +109 -107
  8. package/dist/cjs/index.cjs.map +1 -1
  9. package/dist/cjs-legacy/index.cjs +109 -107
  10. package/dist/cjs-legacy/index.cjs.map +1 -1
  11. package/dist/esm/index.mjs +109 -107
  12. package/dist/esm/index.mjs.map +1 -1
  13. package/dist/esm-legacy/index.mjs +109 -107
  14. package/dist/esm-legacy/index.mjs.map +1 -1
  15. package/dist/leetcode/avl-tree-counter.mjs +2957 -0
  16. package/dist/leetcode/avl-tree-multi-map.mjs +2889 -0
  17. package/dist/leetcode/avl-tree.mjs +2720 -0
  18. package/dist/leetcode/binary-tree.mjs +1594 -0
  19. package/dist/leetcode/bst.mjs +2398 -0
  20. package/dist/leetcode/deque.mjs +683 -0
  21. package/dist/leetcode/directed-graph.mjs +1733 -0
  22. package/dist/leetcode/doubly-linked-list.mjs +709 -0
  23. package/dist/leetcode/hash-map.mjs +493 -0
  24. package/dist/leetcode/heap.mjs +542 -0
  25. package/dist/leetcode/max-heap.mjs +375 -0
  26. package/dist/leetcode/max-priority-queue.mjs +383 -0
  27. package/dist/leetcode/min-heap.mjs +363 -0
  28. package/dist/leetcode/min-priority-queue.mjs +371 -0
  29. package/dist/leetcode/priority-queue.mjs +363 -0
  30. package/dist/leetcode/queue.mjs +943 -0
  31. package/dist/leetcode/red-black-tree.mjs +2765 -0
  32. package/dist/leetcode/singly-linked-list.mjs +754 -0
  33. package/dist/leetcode/stack.mjs +217 -0
  34. package/dist/leetcode/tree-counter.mjs +3039 -0
  35. package/dist/leetcode/tree-multi-map.mjs +2913 -0
  36. package/dist/leetcode/trie.mjs +413 -0
  37. package/dist/leetcode/undirected-graph.mjs +1650 -0
  38. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +1 -1
  39. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -2
  40. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +10 -10
  41. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +22 -23
  42. package/dist/types/data-structures/binary-tree/bst.d.ts +11 -11
  43. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +1 -1
  44. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +1 -1
  45. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  46. package/dist/umd/data-structure-typed.js +105 -103
  47. package/dist/umd/data-structure-typed.js.map +1 -1
  48. package/dist/umd/data-structure-typed.min.js +2 -2
  49. package/dist/umd/data-structure-typed.min.js.map +1 -1
  50. package/package.json +48 -171
  51. package/src/data-structures/binary-tree/avl-tree-counter.ts +6 -6
  52. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +13 -13
  53. package/src/data-structures/binary-tree/avl-tree.ts +15 -15
  54. package/src/data-structures/binary-tree/binary-tree.ts +53 -55
  55. package/src/data-structures/binary-tree/bst.ts +21 -22
  56. package/src/data-structures/binary-tree/red-black-tree.ts +3 -3
  57. package/src/data-structures/binary-tree/tree-counter.ts +4 -4
  58. package/src/data-structures/binary-tree/tree-multi-map.ts +13 -13
  59. package/test/performance/data-structures/binary-tree/red-black-tree.test.ts +1 -2
  60. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +30 -30
  61. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +46 -46
  62. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +43 -43
  63. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +151 -151
  64. package/test/unit/data-structures/binary-tree/bst.test.ts +99 -99
  65. package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
  66. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +141 -141
  67. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +37 -37
  68. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +145 -145
  69. package/tsup.config.js +50 -21
  70. package/tsup.leetcode.config.js +1 -1
  71. package/tsup.umd.config.js +29 -0
  72. package/tsup.node.config.js +0 -83
@@ -12,7 +12,7 @@ describe('TreeCounter count', () => {
12
12
  });
13
13
 
14
14
  it('Should added node count ', () => {
15
- treeCounter.addMany([
15
+ treeCounter.setMany([
16
16
  [1, 1],
17
17
  [2, 2],
18
18
  [3, 3],
@@ -20,14 +20,14 @@ describe('TreeCounter count', () => {
20
20
  [5, 5]
21
21
  ]);
22
22
  const newNode = new TreeCounterNode(3, 33, 10);
23
- treeCounter.add(newNode);
23
+ treeCounter.set(newNode);
24
24
  expect(treeCounter.count).toBe(15);
25
25
  expect(treeCounter.getComputedCount()).toBe(15);
26
26
  expect(treeCounter.getNode(3)?.count).toBe(11);
27
27
  });
28
28
 
29
29
  it('Should count', () => {
30
- treeCounter.addMany([
30
+ treeCounter.setMany([
31
31
  [1, 1],
32
32
  [2, 2],
33
33
  [3, 3]
@@ -44,7 +44,7 @@ describe('TreeCounter operations test1', () => {
44
44
  expect(treeCounter.getHeight()).toBe(-1);
45
45
  expect(treeCounter.getMinHeight()).toBe(-1);
46
46
 
47
- treeCounter.addMany([1, 6, 7, 2, 3, 4, 9, 11, 8, 5, 10, 12, 16, 14, 13, 15]);
47
+ treeCounter.setMany([1, 6, 7, 2, 3, 4, 9, 11, 8, 5, 10, 12, 16, 14, 13, 15]);
48
48
  // treeCounter.print()
49
49
  expect(treeCounter.getHeight()).toBe(5);
50
50
  expect(treeCounter.getMinHeight()).toBe(2);
@@ -55,8 +55,8 @@ describe('TreeCounter operations test1', () => {
55
55
 
56
56
  expect(treeCounter instanceof TreeCounter);
57
57
 
58
- treeCounter.add([11, 11]);
59
- treeCounter.add([3, 3]);
58
+ treeCounter.set([11, 11]);
59
+ treeCounter.set([3, 3]);
60
60
  expect(treeCounter.count).toBe(2);
61
61
  expect(treeCounter.getComputedCount()).toBe(2);
62
62
  expect(treeCounter.size).toBe(2);
@@ -80,7 +80,7 @@ describe('TreeCounter operations test1', () => {
80
80
  [5, 5]
81
81
  ];
82
82
 
83
- treeCounter.addMany(keyValuePairs);
83
+ treeCounter.setMany(keyValuePairs);
84
84
  expect(treeCounter.size).toBe(16);
85
85
  expect(treeCounter.count).toBe(18);
86
86
  expect(treeCounter.getComputedCount()).toBe(18);
@@ -97,8 +97,8 @@ describe('TreeCounter operations test1', () => {
97
97
 
98
98
  expect(treeCounter instanceof TreeCounter);
99
99
 
100
- treeCounter.add([11, 11]);
101
- treeCounter.add([3, 3]);
100
+ treeCounter.set([11, 11]);
101
+ treeCounter.set([3, 3]);
102
102
  const idAndValues: [number, number][] = [
103
103
  [11, 11],
104
104
  [3, 3],
@@ -117,7 +117,7 @@ describe('TreeCounter operations test1', () => {
117
117
  [10, 10],
118
118
  [5, 5]
119
119
  ];
120
- treeCounter.addMany(idAndValues);
120
+ treeCounter.setMany(idAndValues);
121
121
  expect(treeCounter.root instanceof TreeCounterNode);
122
122
 
123
123
  if (treeCounter.root) expect(treeCounter.root.key == 11);
@@ -316,8 +316,8 @@ describe('TreeCounter operations test1', () => {
316
316
  it('should perform various operations on a TreeCounter with object values', () => {
317
317
  const objTreeCounter = new TreeCounter<number, { key: number; keyA: number }>();
318
318
  expect(objTreeCounter).toBeInstanceOf(TreeCounter);
319
- objTreeCounter.add([11, { key: 11, keyA: 11 }]);
320
- objTreeCounter.add([3, { key: 3, keyA: 3 }]);
319
+ objTreeCounter.set([11, { key: 11, keyA: 11 }]);
320
+ objTreeCounter.set([3, { key: 3, keyA: 3 }]);
321
321
  const values: [number, { key: number; keyA: number }][] = [
322
322
  [15, { key: 15, keyA: 15 }],
323
323
  [1, { key: 1, keyA: 1 }],
@@ -335,7 +335,7 @@ describe('TreeCounter operations test1', () => {
335
335
  [5, { key: 5, keyA: 5 }]
336
336
  ];
337
337
 
338
- objTreeCounter.addMany(values);
338
+ objTreeCounter.setMany(values);
339
339
 
340
340
  expect(objTreeCounter.root).toBeInstanceOf(TreeCounterNode);
341
341
 
@@ -355,8 +355,8 @@ describe('TreeCounter operations test recursively1', () => {
355
355
  });
356
356
 
357
357
  expect(treeCounter instanceof TreeCounter);
358
- treeCounter.add([11, 11]);
359
- treeCounter.add([3, 3]);
358
+ treeCounter.set([11, 11]);
359
+ treeCounter.set([3, 3]);
360
360
  const idAndValues: [number, number][] = [
361
361
  [11, 11],
362
362
  [3, 3],
@@ -375,7 +375,7 @@ describe('TreeCounter operations test recursively1', () => {
375
375
  [10, 10],
376
376
  [5, 5]
377
377
  ];
378
- treeCounter.addMany(idAndValues);
378
+ treeCounter.setMany(idAndValues);
379
379
  expect(treeCounter.root).toBeInstanceOf(TreeCounterNode);
380
380
 
381
381
  if (treeCounter.root) expect(treeCounter.root.key).toBe(5);
@@ -583,8 +583,8 @@ describe('TreeCounter operations test recursively1', () => {
583
583
  it('should perform various operations on a TreeCounter with object values', () => {
584
584
  const objTreeCounter = new TreeCounter<number, { key: number; keyA: number }>();
585
585
  expect(objTreeCounter).toBeInstanceOf(TreeCounter);
586
- objTreeCounter.add([11, { key: 11, keyA: 11 }]);
587
- objTreeCounter.add([3, { key: 3, keyA: 3 }]);
586
+ objTreeCounter.set([11, { key: 11, keyA: 11 }]);
587
+ objTreeCounter.set([3, { key: 3, keyA: 3 }]);
588
588
  const values: [number, { key: number; keyA: number }][] = [
589
589
  [15, { key: 15, keyA: 15 }],
590
590
  [1, { key: 1, keyA: 1 }],
@@ -602,7 +602,7 @@ describe('TreeCounter operations test recursively1', () => {
602
602
  [5, { key: 5, keyA: 5 }]
603
603
  ];
604
604
 
605
- objTreeCounter.addMany(values);
605
+ objTreeCounter.setMany(values);
606
606
 
607
607
  expect(objTreeCounter.root).toBeInstanceOf(TreeCounterNode);
608
608
 
@@ -631,7 +631,7 @@ describe('TreeCounter delete test', function () {
631
631
 
632
632
  it('The structure remains normal after random deletion', function () {
633
633
  for (let i = 0; i < inputSize; i++) {
634
- treeCounter.add(i);
634
+ treeCounter.set(i);
635
635
  }
636
636
 
637
637
  expect(treeCounter.size).toBe(inputSize);
@@ -660,7 +660,7 @@ describe('TreeCounter delete test', function () {
660
660
  for (let i = 0; i < inputSize; i++) {
661
661
  const num = getRandomInt(0, inputSize - 1);
662
662
  if (i === 0 && isDebug) console.log(`first:`, num);
663
- treeCounter.add(num);
663
+ treeCounter.set(num);
664
664
  }
665
665
 
666
666
  for (let i = 0; i < inputSize; i++) {
@@ -686,7 +686,7 @@ describe('TreeCounter delete test', function () {
686
686
  for (let i = 0; i < inputSize; i++) {
687
687
  const num = getRandomInt(0, inputSize - 1);
688
688
  if (i === 0 && isDebug) console.log(`first:`, num);
689
- treeCounter.add(num);
689
+ treeCounter.set(num);
690
690
  }
691
691
 
692
692
  for (let i = 0; i < inputSize; i++) {
@@ -721,7 +721,7 @@ describe('TreeCounter delete test', function () {
721
721
  }
722
722
 
723
723
  const treeCounter = new TreeCounter<string, number>();
724
- treeCounter.addMany([
724
+ treeCounter.setMany([
725
725
  ['2', 2],
726
726
  ['4', 4],
727
727
  ['5', 5],
@@ -750,9 +750,9 @@ describe('TreeCounter iterative methods test', () => {
750
750
  let treeCounter: TreeCounter<number, string>;
751
751
  beforeEach(() => {
752
752
  treeCounter = new TreeCounter<number, string>();
753
- treeCounter.add(1, 'a', 10);
754
- treeCounter.add([2, 'b'], undefined, 10);
755
- treeCounter.add([3, 'c'], undefined, 1);
753
+ treeCounter.set(1, 'a', 10);
754
+ treeCounter.set([2, 'b'], undefined, 10);
755
+ treeCounter.set([3, 'c'], undefined, 1);
756
756
  });
757
757
 
758
758
  it('The node obtained by get Node should match the node type', () => {
@@ -845,7 +845,7 @@ describe('TreeCounter count not map mode', () => {
845
845
  });
846
846
 
847
847
  it('Should added node count ', () => {
848
- treeCounter.addMany([
848
+ treeCounter.setMany([
849
849
  [1, 1],
850
850
  [2, 2],
851
851
  [3, 3],
@@ -853,7 +853,7 @@ describe('TreeCounter count not map mode', () => {
853
853
  [5, 5]
854
854
  ]);
855
855
  const newNode = new TreeCounterNode(3, undefined, 10);
856
- treeCounter.add(newNode, 33, 20);
856
+ treeCounter.set(newNode, 33, 20);
857
857
  // TODO expect(treeCounter.count).toBe(25);
858
858
  expect(treeCounter.count).toBe(15);
859
859
  expect(treeCounter.getComputedCount()).toBe(15);
@@ -867,8 +867,8 @@ describe('TreeCounter operations test1 not map mode', () => {
867
867
 
868
868
  expect(treeCounter instanceof TreeCounter);
869
869
 
870
- treeCounter.add([11, 11]);
871
- treeCounter.add([3, 3]);
870
+ treeCounter.set([11, 11]);
871
+ treeCounter.set([3, 3]);
872
872
  const idAndValues: [number, number][] = [
873
873
  [11, 11],
874
874
  [3, 3],
@@ -887,7 +887,7 @@ describe('TreeCounter operations test1 not map mode', () => {
887
887
  [10, 10],
888
888
  [5, 5]
889
889
  ];
890
- treeCounter.addMany(idAndValues);
890
+ treeCounter.setMany(idAndValues);
891
891
  expect(treeCounter.root instanceof TreeCounterNode);
892
892
 
893
893
  if (treeCounter.root) expect(treeCounter.root.key == 11);
@@ -916,8 +916,8 @@ describe('TreeCounter operations test recursively1 not map mode', () => {
916
916
  });
917
917
 
918
918
  expect(treeCounter instanceof TreeCounter);
919
- treeCounter.add([11, 11]);
920
- treeCounter.add([3, 3]);
919
+ treeCounter.set([11, 11]);
920
+ treeCounter.set([3, 3]);
921
921
  const idAndValues: [number, number][] = [
922
922
  [11, 11],
923
923
  [3, 3],
@@ -936,7 +936,7 @@ describe('TreeCounter operations test recursively1 not map mode', () => {
936
936
  [10, 10],
937
937
  [5, 5]
938
938
  ];
939
- treeCounter.addMany(idAndValues);
939
+ treeCounter.setMany(idAndValues);
940
940
  expect(treeCounter.root).toBeInstanceOf(TreeCounterNode);
941
941
 
942
942
  if (treeCounter.root) expect(treeCounter.root.key).toBe(5);
@@ -961,9 +961,9 @@ describe('TreeCounter iterative methods test not map mode', () => {
961
961
  let treeCounter: TreeCounter<number, string>;
962
962
  beforeEach(() => {
963
963
  treeCounter = new TreeCounter<number, string>([], { isMapMode: false });
964
- treeCounter.add(1, 'a', 10);
965
- treeCounter.add([2, 'b'], undefined, 10);
966
- treeCounter.add([3, 'c'], undefined, 1);
964
+ treeCounter.set(1, 'a', 10);
965
+ treeCounter.set([2, 'b'], undefined, 10);
966
+ treeCounter.set([3, 'c'], undefined, 1);
967
967
  });
968
968
 
969
969
  it('should clone work well', () => {