data-structure-typed 1.49.9 → 1.50.0

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 (76) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/benchmark/report.html +1 -37
  3. package/benchmark/report.json +22 -370
  4. package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
  5. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +0 -7
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.js +0 -9
  7. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +5 -22
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js +9 -80
  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 +89 -27
  12. package/dist/cjs/data-structures/binary-tree/bst.js +131 -46
  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 +0 -7
  15. package/dist/cjs/data-structures/binary-tree/rb-tree.js +1 -10
  16. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +0 -7
  18. package/dist/cjs/data-structures/binary-tree/tree-multimap.js +2 -11
  19. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
  20. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  21. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  22. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  23. package/dist/cjs/data-structures/hash/hash-map.d.ts +3 -3
  24. package/dist/cjs/data-structures/hash/hash-map.js +6 -6
  25. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  26. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  27. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  28. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  29. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  30. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  31. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  32. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  33. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +0 -7
  34. package/dist/mjs/data-structures/binary-tree/avl-tree.js +0 -9
  35. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +5 -22
  36. package/dist/mjs/data-structures/binary-tree/binary-tree.js +9 -80
  37. package/dist/mjs/data-structures/binary-tree/bst.d.ts +89 -27
  38. package/dist/mjs/data-structures/binary-tree/bst.js +131 -46
  39. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +0 -7
  40. package/dist/mjs/data-structures/binary-tree/rb-tree.js +1 -10
  41. package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +0 -7
  42. package/dist/mjs/data-structures/binary-tree/tree-multimap.js +2 -11
  43. package/dist/mjs/data-structures/hash/hash-map.d.ts +3 -3
  44. package/dist/mjs/data-structures/hash/hash-map.js +15 -15
  45. package/dist/umd/data-structure-typed.js +143 -153
  46. package/dist/umd/data-structure-typed.min.js +2 -2
  47. package/dist/umd/data-structure-typed.min.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/data-structures/base/iterable-base.ts +6 -6
  50. package/src/data-structures/binary-tree/avl-tree.ts +7 -18
  51. package/src/data-structures/binary-tree/binary-tree.ts +111 -149
  52. package/src/data-structures/binary-tree/bst.ts +159 -56
  53. package/src/data-structures/binary-tree/rb-tree.ts +7 -18
  54. package/src/data-structures/binary-tree/tree-multimap.ts +8 -19
  55. package/src/data-structures/graph/abstract-graph.ts +14 -15
  56. package/src/data-structures/graph/directed-graph.ts +6 -7
  57. package/src/data-structures/graph/undirected-graph.ts +6 -7
  58. package/src/data-structures/hash/hash-map.ts +23 -22
  59. package/src/data-structures/heap/heap.ts +1 -1
  60. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  61. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  62. package/src/data-structures/queue/deque.ts +3 -3
  63. package/src/data-structures/queue/queue.ts +1 -1
  64. package/src/data-structures/stack/stack.ts +1 -1
  65. package/src/data-structures/trie/trie.ts +1 -1
  66. package/src/types/data-structures/graph/abstract-graph.ts +8 -8
  67. package/test/integration/all-in-one.test.ts +1 -1
  68. package/test/integration/index.html +2 -2
  69. package/test/performance/data-structures/queue/deque.test.ts +8 -2
  70. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +2 -2
  71. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +38 -9
  72. package/test/unit/data-structures/binary-tree/bst.test.ts +8 -12
  73. package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +4 -4
  74. package/test/unit/data-structures/graph/abstract-graph.test.ts +2 -1
  75. package/test/unit/data-structures/hash/hash-map.test.ts +3 -1
  76. package/test/unit/data-structures/queue/deque.test.ts +2 -1
@@ -4,8 +4,8 @@
4
4
  <meta charset='UTF-8'>
5
5
  <title>CDN Test</title>
6
6
  <!-- <script src="../../dist/umd/data-structure-typed.min.js"></script>-->
7
- <script src="../../dist/umd/data-structure-typed.js"></script>
8
- <!-- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed/dist/umd/data-structure-typed.min.js'></script>-->
7
+ <script src="../../dist/umd/data-structure-typed.js"></script>
8
+ <!-- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed/dist/umd/data-structure-typed.min.js'></script>-->
9
9
  <!-- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed@1.42.2/dist/umd/data-structure-typed.min.js'></script>-->
10
10
  <!-- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed@1.43.3/dist/umd/data-structure-typed.min.js'></script>-->
11
11
  <!-- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed@1.44.0/dist/umd/data-structure-typed.min.js'></script>-->
@@ -1,11 +1,11 @@
1
1
  import { Deque } from '../../../../src';
2
2
  import { Deque as CDeque } from 'js-sdsl';
3
3
  import * as Benchmark from 'benchmark';
4
- import { magnitude } from '../../../utils';
4
+ import { getRandomInt, magnitude } from '../../../utils';
5
5
  import { isCompetitor } from '../../../config';
6
6
 
7
7
  export const suite = new Benchmark.Suite();
8
- const { MILLION, HUNDRED_THOUSAND } = magnitude;
8
+ const { MILLION, HUNDRED_THOUSAND, TEN_THOUSAND } = magnitude;
9
9
 
10
10
  suite.add(`${MILLION.toLocaleString()} push`, () => {
11
11
  const deque = new Deque<number>();
@@ -20,6 +20,12 @@ if (isCompetitor) {
20
20
  }
21
21
 
22
22
  suite
23
+ .add(`${TEN_THOUSAND.toLocaleString()} push & delete`, () => {
24
+ const _deque = new Deque<number>();
25
+
26
+ for (let i = 0; i < TEN_THOUSAND; i++) _deque.push(i);
27
+ for (let i = 0; i < TEN_THOUSAND; i++) _deque.delete(getRandomInt(0, TEN_THOUSAND - 1));
28
+ })
23
29
  .add(`${MILLION.toLocaleString()} push & pop`, () => {
24
30
  const _deque = new Deque<number>();
25
31
 
@@ -24,7 +24,7 @@ describe('AVL Tree Test', () => {
24
24
  expect(getMinNodeBySpecificNode?.key).toBe(12);
25
25
 
26
26
  let subTreeSum = 0;
27
- node15 && tree.subTreeTraverse(node => (subTreeSum += node.key), node15);
27
+ node15 && tree.dfs(node => (subTreeSum += node.key), 'pre', node15);
28
28
  expect(subTreeSum).toBe(70);
29
29
 
30
30
  let lesserSum = 0;
@@ -132,7 +132,7 @@ describe('AVL Tree Test recursively', () => {
132
132
  expect(getMinNodeBySpecificNode?.key).toBe(12);
133
133
 
134
134
  let subTreeSum = 0;
135
- node15 && tree.subTreeTraverse(node => (subTreeSum += node.key), node15);
135
+ node15 && tree.dfs(node => (subTreeSum += node.key), 'pre', node15);
136
136
  expect(subTreeSum).toBe(70);
137
137
 
138
138
  let lesserSum = 0;
@@ -238,16 +238,45 @@ describe('BinaryTree', () => {
238
238
  expect(tree.getNodes(tree.getNodeByKey(2), undefined, false, tree.root)).toEqual([tree.getNodeByKey(2)]);
239
239
  });
240
240
 
241
- it('should subTreeTraverse', () => {
241
+ // it('should subTreeTraverse', () => {
242
+ // tree.addMany([4, 2, 6, null, 1, 3, null, 5, null, 7]);
243
+ // expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
244
+ // expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.ITERATIVE, false)).toEqual([6, 3, 7]);
245
+ // expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 3, 7]);
246
+ // expect(
247
+ // tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.ITERATIVE, true)
248
+ // ).toEqual([6, 3, 7, null]);
249
+ // expect(
250
+ // tree.subTreeTraverse(node => (node ? node.key : node), tree.getNode(6), IterationType.ITERATIVE, true)
251
+ // ).toEqual([6, 3, 7, null]);
252
+ // expect(
253
+ // tree.subTreeTraverse(node => (node ? node.key : null), tree.getNode(6), IterationType.RECURSIVE, true)
254
+ // ).toEqual([6, 3, 7, null]);
255
+ // });
256
+
257
+ it('should sub tree traverse', () => {
242
258
  tree.addMany([4, 2, 6, null, 1, 3, null, 5, null, 7]);
243
- expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
244
- expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 3, 7]);
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]);
259
+ expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.ITERATIVE)).toEqual([6, 3, 7]);
260
+ expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.ITERATIVE, false)).toEqual([6, 3, 7]);
261
+ expect(tree.dfs(node => node.key, 'pre', tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 3, 7]);
262
+ expect(tree.dfs(node => (node ? node.key : null), 'pre', tree.getNode(6), IterationType.ITERATIVE, true)).toEqual([
263
+ 6,
264
+ 3,
265
+ 7,
266
+ null
267
+ ]);
268
+ expect(tree.dfs(node => (node ? node.key : node), 'pre', tree.getNode(6), IterationType.ITERATIVE, true)).toEqual([
269
+ 6,
270
+ 3,
271
+ 7,
272
+ null
273
+ ]);
274
+ expect(tree.dfs(node => (node ? node.key : null), 'pre', tree.getNode(6), IterationType.RECURSIVE, true)).toEqual([
275
+ 6,
276
+ 3,
277
+ 7,
278
+ null
279
+ ]);
251
280
  });
252
281
 
253
282
  it('should clear the tree', () => {
@@ -54,7 +54,7 @@ describe('BST operations test', () => {
54
54
  expect(minNodeBySpecificNode?.key).toBe(12);
55
55
 
56
56
  let subTreeSum = 0;
57
- node15 && bst.subTreeTraverse(node => (subTreeSum += node.key), 15);
57
+ node15 && bst.dfs(node => (subTreeSum += node.key), 'pre', 15);
58
58
  expect(subTreeSum).toBe(70);
59
59
 
60
60
  let lesserSum = 0;
@@ -257,7 +257,7 @@ describe('BST operations test', () => {
257
257
  expect(minNodeBySpecificNode?.key).toBe(12);
258
258
 
259
259
  let subTreeSum = 0;
260
- node15 && objBST.subTreeTraverse(node => (subTreeSum += node.key), node15);
260
+ node15 && objBST.dfs(node => (subTreeSum += node.key), 'pre', node15);
261
261
  expect(subTreeSum).toBe(70);
262
262
 
263
263
  let lesserSum = 0;
@@ -444,7 +444,7 @@ describe('BST operations test recursively', () => {
444
444
  expect(minNodeBySpecificNode?.key).toBe(12);
445
445
 
446
446
  let subTreeSum = 0;
447
- node15 && bst.subTreeTraverse(node => (subTreeSum += node.key), 15);
447
+ node15 && bst.dfs(node => (subTreeSum += node.key), 'pre', 15);
448
448
  expect(subTreeSum).toBe(70);
449
449
 
450
450
  let lesserSum = 0;
@@ -645,7 +645,7 @@ describe('BST operations test recursively', () => {
645
645
  expect(minNodeBySpecificNode?.key).toBe(12);
646
646
 
647
647
  let subTreeSum = 0;
648
- node15 && objBST.subTreeTraverse(node => (subTreeSum += node.key), node15);
648
+ node15 && objBST.dfs(node => (subTreeSum += node.key), 'pre', node15);
649
649
  expect(subTreeSum).toBe(70);
650
650
 
651
651
  let lesserSum = 0;
@@ -868,14 +868,10 @@ describe('BST Performance test', function () {
868
868
  it('should subTreeTraverse, null should be ignored', () => {
869
869
  const bst = new BST();
870
870
  bst.addMany([4, 2, 6, 1, 3, 5, 7]);
871
- expect(bst.subTreeTraverse(node => node.key, bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
872
- expect(bst.subTreeTraverse(node => node.key, bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
873
- expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.ITERATIVE, true)).toEqual([
874
- 6, 5, 7
875
- ]);
876
- expect(bst.subTreeTraverse(node => node?.key ?? undefined, bst.getNode(6), IterationType.RECURSIVE, true)).toEqual([
877
- 6, 5, 7
878
- ]);
871
+ expect(bst.dfs(node => node.key, 'pre', bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
872
+ expect(bst.dfs(node => node.key, 'pre', bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
873
+ expect(bst.dfs(node => node?.key ?? undefined, 'pre', bst.getNode(6), IterationType.ITERATIVE)).toEqual([6, 5, 7]);
874
+ expect(bst.dfs(node => node?.key ?? undefined, 'pre', bst.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
879
875
  });
880
876
  });
881
877
 
@@ -96,7 +96,7 @@ describe('TreeMultimap operations test1', () => {
96
96
  expect(minNodeBySpecificNode?.key).toBe(15);
97
97
 
98
98
  let subTreeSum = 0;
99
- node15 && treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (subTreeSum += node.key), 15);
99
+ node15 && treeMultimap.dfs(node => (subTreeSum += node.key), 'pre', 15);
100
100
  expect(subTreeSum).toBe(31);
101
101
  let lesserSum = 0;
102
102
  treeMultimap.lesserOrGreaterTraverse((node: TreeMultimapNode<number>) => (lesserSum += node.key), CP.lt, 10);
@@ -104,7 +104,7 @@ describe('TreeMultimap operations test1', () => {
104
104
 
105
105
  expect(node15 instanceof TreeMultimapNode);
106
106
  if (node15 instanceof TreeMultimapNode) {
107
- const subTreeAdd = treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (node.count += 1), 15);
107
+ const subTreeAdd = treeMultimap.dfs(node => (node.count += 1), 'pre', 15);
108
108
  expect(subTreeAdd);
109
109
  }
110
110
  const node11 = treeMultimap.getNode(11);
@@ -350,7 +350,7 @@ describe('TreeMultimap operations test recursively1', () => {
350
350
  expect(minNodeBySpecificNode?.key).toBe(15);
351
351
 
352
352
  let subTreeSum = 0;
353
- node15 && treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (subTreeSum += node.key), 15);
353
+ node15 && treeMultimap.dfs(node => (subTreeSum += node.key), 'pre', 15);
354
354
  expect(subTreeSum).toBe(31);
355
355
  let lesserSum = 0;
356
356
  treeMultimap.lesserOrGreaterTraverse((node: TreeMultimapNode<number>) => (lesserSum += node.key), CP.lt, 10);
@@ -358,7 +358,7 @@ describe('TreeMultimap operations test recursively1', () => {
358
358
 
359
359
  expect(node15 instanceof TreeMultimapNode);
360
360
  if (node15 instanceof TreeMultimapNode) {
361
- const subTreeAdd = treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (node.count += 1), 15);
361
+ const subTreeAdd = treeMultimap.dfs(node => (node.count += 1), 'pre', 15);
362
362
  expect(subTreeAdd);
363
363
  }
364
364
  const node11 = treeMultimap.getNode(11);
@@ -85,7 +85,8 @@ class MyGraph<
85
85
  describe('AbstractGraph Operation Test', () => {
86
86
  const myGraph: MyGraph<number, string> = new MyGraph<number, string>();
87
87
 
88
- beforeEach(() => {});
88
+ beforeEach(() => {
89
+ });
89
90
  it('should edge cases', function () {
90
91
  myGraph.addVertex('A', 1);
91
92
  myGraph.addVertex('B', 2);
@@ -110,6 +110,8 @@ describe('HashMap Test2', () => {
110
110
 
111
111
  test('Inheritability test', () => {
112
112
  class ExtendedHashMap<K, V> extends HashMap<K, V> {
113
+ someOtherParam?: string;
114
+
113
115
  constructor(
114
116
  elements: Iterable<[K, V]> = [],
115
117
  options?: {
@@ -118,8 +120,8 @@ describe('HashMap Test2', () => {
118
120
  }
119
121
  ) {
120
122
  const { someOtherParam, ...restOptions } = options || {};
121
- // do something with someOtherParam
122
123
  super(elements, restOptions);
124
+ this.someOtherParam = someOtherParam;
123
125
  }
124
126
  }
125
127
 
@@ -114,7 +114,8 @@ describe('Deque - Complex Operations', () => {
114
114
  expect([...deque]).toEqual([1, 2, 3]);
115
115
  });
116
116
 
117
- test('shrinkToFit should reduce the memory footprint', () => {});
117
+ test('shrinkToFit should reduce the memory footprint', () => {
118
+ });
118
119
  });
119
120
  describe('Deque - Utility Operations', () => {
120
121
  let deque: Deque<number>;