data-structure-typed 1.53.0 → 1.53.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 (45) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/benchmark/report.html +1 -37
  3. package/benchmark/report.json +23 -383
  4. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +1 -1
  5. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.js +1 -1
  7. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.js +2 -2
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/bst.js +5 -3
  11. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  12. package/dist/cjs/data-structures/binary-tree/rb-tree.js +7 -3
  13. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +1 -1
  15. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  16. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +1 -1
  17. package/dist/mjs/data-structures/binary-tree/avl-tree.js +1 -1
  18. package/dist/mjs/data-structures/binary-tree/binary-tree.js +2 -2
  19. package/dist/mjs/data-structures/binary-tree/bst.js +5 -3
  20. package/dist/mjs/data-structures/binary-tree/rb-tree.js +7 -3
  21. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +1 -1
  22. package/dist/umd/data-structure-typed.js +16 -10
  23. package/dist/umd/data-structure-typed.min.js +2 -2
  24. package/dist/umd/data-structure-typed.min.js.map +1 -1
  25. package/package.json +6 -6
  26. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
  27. package/src/data-structures/binary-tree/avl-tree.ts +1 -1
  28. package/src/data-structures/binary-tree/binary-tree.ts +2 -2
  29. package/src/data-structures/binary-tree/bst.ts +4 -3
  30. package/src/data-structures/binary-tree/rb-tree.ts +7 -2
  31. package/src/data-structures/binary-tree/tree-multi-map.ts +1 -1
  32. package/src/types/data-structures/binary-tree/binary-tree.ts +3 -3
  33. package/src/types/data-structures/binary-tree/bst.ts +1 -1
  34. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +1 -1
  35. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +2 -2
  36. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +1 -1
  37. package/test/performance/data-structures/binary-tree/bst.test.ts +1 -1
  38. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +9 -1
  39. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +8 -8
  40. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -9
  41. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +36 -22
  42. package/test/unit/data-structures/binary-tree/bst.test.ts +33 -14
  43. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +19 -0
  44. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +11 -11
  45. package/test/utils/array.ts +15 -12
@@ -182,6 +182,25 @@ describe('RedBlackTree 1', () => {
182
182
  expect(rbTree.size).toBe(4);
183
183
  expect(cloned.size).toBe(3);
184
184
  });
185
+
186
+ it('should replace value', () => {
187
+ const tree = new RedBlackTree<number, string>([4, 5, [1, '1'], 2, 3], { isMapMode: false });
188
+ expect(tree.get(1)).toBe('1');
189
+ expect(tree.getNode(1)?.value).toBe('1');
190
+ tree.add(1, 'a');
191
+ expect(tree.get(1)).toBe('a');
192
+ tree.add([1, 'b']);
193
+ expect(tree.getNode(1)?.value).toBe('b');
194
+ expect(tree.get(1)).toBe('b');
195
+ const treeMap = new RedBlackTree<number>([4, 5, [1, '1'], 2, 3]);
196
+ expect(treeMap.get(1)).toBe('1');
197
+ expect(treeMap.getNode(1)?.value).toBe(undefined);
198
+ treeMap.add(1, 'a');
199
+ expect(treeMap.get(1)).toBe('a');
200
+ treeMap.add([1, 'b']);
201
+ expect(treeMap.getNode(1)?.value).toBe(undefined);
202
+ expect(treeMap.get(1)).toBe('b');
203
+ });
185
204
  });
186
205
 
187
206
  describe('RedBlackTree 2', () => {
@@ -133,7 +133,7 @@ describe('TreeMultiMap operations test1', () => {
133
133
  const nodeId10 = tmm.getNode(10);
134
134
  expect(nodeId10?.key).toBe(10);
135
135
 
136
- const nodeVal9 = tmm.getNode(node => node.value === 9);
136
+ const nodeVal9 = tmm.getNode(node => node.key === 9);
137
137
  expect(nodeVal9?.key).toBe(9);
138
138
 
139
139
  const nodesByCount1 = tmm.getNodes(node => node.count === 1);
@@ -391,7 +391,7 @@ describe('TreeMultiMap operations test recursively1', () => {
391
391
  const nodeId10 = tmm.getNode(10);
392
392
  expect(nodeId10?.key).toBe(10);
393
393
 
394
- const nodeVal9 = tmm.getNode(node => node.value === 9);
394
+ const nodeVal9 = tmm.getNode(node => node.key === 9);
395
395
  expect(nodeVal9?.key).toBe(9);
396
396
 
397
397
  const nodesByCount1 = tmm.getNodes(node => node.count === 1);
@@ -837,10 +837,10 @@ describe('TreeMultiMap iterative methods test', () => {
837
837
  });
838
838
  });
839
839
 
840
- describe('TreeMultiMap count map mode', () => {
840
+ describe('TreeMultiMap count not map mode', () => {
841
841
  let tmm: TreeMultiMap<number>;
842
842
  beforeEach(() => {
843
- tmm = new TreeMultiMap<number>([], { isMapMode: true });
843
+ tmm = new TreeMultiMap<number>([], { isMapMode: false });
844
844
  });
845
845
 
846
846
  it('Should added node count ', () => {
@@ -860,9 +860,9 @@ describe('TreeMultiMap count map mode', () => {
860
860
  });
861
861
  });
862
862
 
863
- describe('TreeMultiMap operations test1 map mode', () => {
863
+ describe('TreeMultiMap operations test1 not map mode', () => {
864
864
  it('should perform various operations on a Binary Search Tree with numeric values1', () => {
865
- const tmm = new TreeMultiMap<number, number>([], { isMapMode: true });
865
+ const tmm = new TreeMultiMap<number, number>([], { isMapMode: false });
866
866
 
867
867
  expect(tmm instanceof TreeMultiMap);
868
868
 
@@ -907,11 +907,11 @@ describe('TreeMultiMap operations test1 map mode', () => {
907
907
  });
908
908
  });
909
909
 
910
- describe('TreeMultiMap operations test recursively1 map mode', () => {
910
+ describe('TreeMultiMap operations test recursively1 not map mode', () => {
911
911
  it('should perform various operations on a Binary Search Tree with numeric values1', () => {
912
912
  const tmm = new TreeMultiMap<number>([], {
913
913
  iterationType: 'RECURSIVE',
914
- isMapMode: true
914
+ isMapMode: false
915
915
  });
916
916
 
917
917
  expect(tmm instanceof TreeMultiMap);
@@ -956,10 +956,10 @@ describe('TreeMultiMap operations test recursively1 map mode', () => {
956
956
  });
957
957
  });
958
958
 
959
- describe('TreeMultiMap iterative methods testm ap mode', () => {
959
+ describe('TreeMultiMap iterative methods test not map mode', () => {
960
960
  let treeMM: TreeMultiMap<number, string>;
961
961
  beforeEach(() => {
962
- treeMM = new TreeMultiMap<number, string>([], { isMapMode: true });
962
+ treeMM = new TreeMultiMap<number, string>([], { isMapMode: false });
963
963
  treeMM.add(1, 'a', 10);
964
964
  treeMM.add([2, 'b'], undefined, 10);
965
965
  treeMM.add([3, 'c'], undefined, 1);
@@ -970,6 +970,6 @@ describe('TreeMultiMap iterative methods testm ap mode', () => {
970
970
  expect(treeMM.getComputedCount()).toBe(21);
971
971
  const cloned = treeMM.clone();
972
972
  expect(cloned.root?.left?.key).toBe(1);
973
- expect(cloned.get(cloned.root?.right)).toBe('c');
973
+ expect(cloned.get(cloned.root?.right)).toBe(undefined);
974
974
  });
975
975
  });
@@ -1,19 +1,22 @@
1
1
  import { getRandomInt } from './number';
2
2
 
3
- export function getRandomIntArray(length: number = 1000, min: number = -1000, max: number = 1000, isDistinct = true) {
4
- if (isDistinct) {
5
- const set = new Set<number>();
6
- const ans: number[] = [];
7
- while (ans.length < length) {
8
- const num = getRandomInt(min, max);
9
- if (!set.has(num)) {
10
- ans.push(num);
11
- set.add(num);
12
- }
3
+ export function getRandomIntArray(length: number = 1000, min: number = -1000, max: number = 1000, unique = true) {
4
+ if (unique) {
5
+ if (max - min + 1 < length) {
6
+ throw new Error("Range too small for unique values with the specified length");
13
7
  }
14
- return ans;
8
+
9
+ const allNumbers = Array.from({ length: max - min + 1 }, (_, i) => i + min);
10
+
11
+ for (let i = allNumbers.length - 1; i > 0; i--) {
12
+ const j = Math.floor(Math.random() * (i + 1));
13
+ [allNumbers[i], allNumbers[j]] = [allNumbers[j], allNumbers[i]];
14
+ }
15
+
16
+ return allNumbers.slice(0, length);
17
+ } else {
18
+ return Array.from({ length }, () => Math.floor(Math.random() * (max - min + 1)) + min);
15
19
  }
16
- return new Array<number>(length).fill(0).map(() => getRandomInt(min, max));
17
20
  }
18
21
 
19
22
  const words = [