data-structure-typed 1.37.0 → 1.37.2

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 (41) hide show
  1. package/dist/data-structures/binary-tree/binary-tree.d.ts +36 -200
  2. package/dist/data-structures/binary-tree/binary-tree.js +79 -231
  3. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  4. package/dist/data-structures/binary-tree/bst.d.ts +9 -8
  5. package/dist/data-structures/binary-tree/bst.js +37 -25
  6. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  7. package/dist/data-structures/binary-tree/tree-multiset.d.ts +1 -35
  8. package/dist/data-structures/binary-tree/tree-multiset.js +1 -79
  9. package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
  10. package/dist/data-structures/heap/heap.d.ts +1 -1
  11. package/dist/data-structures/heap/heap.js +1 -1
  12. package/dist/types/data-structures/binary-tree.d.ts +2 -0
  13. package/dist/types/data-structures/index.d.ts +2 -0
  14. package/lib/data-structures/binary-tree/binary-tree.d.ts +36 -200
  15. package/lib/data-structures/binary-tree/binary-tree.js +79 -231
  16. package/lib/data-structures/binary-tree/bst.d.ts +9 -8
  17. package/lib/data-structures/binary-tree/bst.js +37 -25
  18. package/lib/data-structures/binary-tree/tree-multiset.d.ts +1 -35
  19. package/lib/data-structures/binary-tree/tree-multiset.js +1 -79
  20. package/lib/data-structures/heap/heap.d.ts +1 -1
  21. package/lib/data-structures/heap/heap.js +1 -1
  22. package/lib/types/data-structures/binary-tree.d.ts +2 -0
  23. package/lib/types/data-structures/index.d.ts +2 -0
  24. package/package.json +5 -5
  25. package/src/data-structures/binary-tree/binary-tree.ts +95 -445
  26. package/src/data-structures/binary-tree/bst.ts +43 -29
  27. package/src/data-structures/binary-tree/tree-multiset.ts +2 -84
  28. package/src/data-structures/heap/heap.ts +1 -1
  29. package/src/types/data-structures/binary-tree.ts +4 -0
  30. package/src/types/data-structures/index.ts +3 -0
  31. package/test/integration/avl-tree.test.ts +19 -16
  32. package/test/integration/bst.test.ts +37 -33
  33. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +12 -9
  34. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +1 -1
  35. package/test/unit/data-structures/binary-tree/bst.test.ts +52 -22
  36. package/test/unit/data-structures/binary-tree/overall.test.ts +2 -1
  37. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +5 -5
  38. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +16 -21
  39. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
  40. package/umd/bundle.min.js +1 -1
  41. package/umd/bundle.min.js.map +1 -1
@@ -1,9 +1,9 @@
1
- import {AVLTree, CP} from '../../../../src';
1
+ import {AVLTree, CP, AVLTreeNode} from '../../../../src';
2
2
 
3
3
  describe('AVL Tree Test', () => {
4
4
  it('should perform various operations on a AVL Tree', () => {
5
5
  const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
6
- const tree = new AVLTree();
6
+ const tree = new AVLTree<AVLTreeNode<number>>();
7
7
 
8
8
  for (const i of arr) tree.add(i, i);
9
9
 
@@ -12,7 +12,7 @@ describe('AVL Tree Test', () => {
12
12
  expect(node6 && tree.getHeight(node6)).toBe(3);
13
13
  expect(node6 && tree.getDepth(node6)).toBe(1);
14
14
 
15
- const getNodeById = tree.get(10, 'key');
15
+ const getNodeById = tree.get(10);
16
16
  expect(getNodeById?.key).toBe(10);
17
17
 
18
18
  const getMinNodeByRoot = tree.getLeftMost();
@@ -23,22 +23,23 @@ describe('AVL Tree Test', () => {
23
23
  expect(getMinNodeBySpecificNode?.key).toBe(12);
24
24
 
25
25
  let subTreeSum = 0;
26
- node15 && tree.subTreeForeach(node15, node => (subTreeSum += node.key));
26
+ node15 && tree.subTreeTraverse(node => (subTreeSum += node.key), node15);
27
27
  expect(subTreeSum).toBe(70);
28
28
 
29
29
  let lesserSum = 0;
30
- tree.lesserOrGreaterForeach(10, CP.lt, node => (lesserSum += node.key));
30
+ tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
31
31
  expect(lesserSum).toBe(45);
32
32
 
33
33
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
34
34
  expect(node15?.val).toBe(15);
35
35
 
36
- const dfs = tree.dfs('in', 'node');
36
+ const dfs = tree.dfs(node => node, 'in');
37
37
  expect(dfs[0].key).toBe(1);
38
38
  expect(dfs[dfs.length - 1].key).toBe(16);
39
39
 
40
40
  tree.perfectlyBalance();
41
- const bfs = tree.bfs('node');
41
+ const bfs: AVLTreeNode<number>[] = [];
42
+ tree.bfs(node => bfs.push(node));
42
43
  expect(tree.isPerfectlyBalanced()).toBe(true);
43
44
  expect(bfs[0].key).toBe(8);
44
45
  expect(bfs[bfs.length - 1].key).toBe(16);
@@ -97,12 +98,14 @@ describe('AVL Tree Test', () => {
97
98
  expect(tree.getHeight()).toBe(1);
98
99
 
99
100
  expect(tree.isAVLBalanced()).toBe(true);
100
- const lastBFSIds = tree.bfs();
101
+ const lastBFSIds = new Array<number>();
102
+ tree.bfs(node => lastBFSIds.push(node.key));
101
103
  expect(lastBFSIds[0]).toBe(12);
102
104
  expect(lastBFSIds[1]).toBe(2);
103
105
  expect(lastBFSIds[2]).toBe(16);
104
106
 
105
- const lastBFSNodes = tree.bfs('node');
107
+ const lastBFSNodes: AVLTreeNode<number>[] = [];
108
+ tree.bfs(node => lastBFSNodes.push(node));
106
109
  expect(lastBFSNodes[0].key).toBe(12);
107
110
  expect(lastBFSNodes[1].key).toBe(2);
108
111
  expect(lastBFSNodes[2].key).toBe(16);
@@ -127,7 +127,7 @@ describe('BinaryTree', () => {
127
127
  binaryTree.add(5);
128
128
  binaryTree.add(7);
129
129
 
130
- const inOrder = binaryTree.dfs('in');
130
+ const inOrder = binaryTree.dfs(node => node.key);
131
131
 
132
132
  expect(inOrder).toEqual([1, 2, 3, 4, 5, 6, 7]);
133
133
  });
@@ -1,6 +1,6 @@
1
1
  import {BST, BSTNode, CP} from '../../../../src';
2
2
 
3
- const isDebug = false;
3
+ const isDebug = true;
4
4
 
5
5
  describe('BST operations test', () => {
6
6
  it('should perform various operations on a Binary Search Tree with numeric values', () => {
@@ -25,7 +25,7 @@ describe('BST operations test', () => {
25
25
  const nodeId10 = bst.get(10);
26
26
  expect(nodeId10?.key).toBe(10);
27
27
 
28
- const nodeVal9 = bst.get(9, 'val');
28
+ const nodeVal9 = bst.get(9, node => node.val);
29
29
  expect(nodeVal9?.key).toBe(9);
30
30
 
31
31
  const leftMost = bst.getLeftMost();
@@ -36,11 +36,11 @@ describe('BST operations test', () => {
36
36
  expect(minNodeBySpecificNode?.key).toBe(12);
37
37
 
38
38
  let subTreeSum = 0;
39
- node15 && bst.subTreeForeach(15, node => (subTreeSum += node.key));
39
+ node15 && bst.subTreeTraverse(node => (subTreeSum += node.key), 15);
40
40
  expect(subTreeSum).toBe(70);
41
41
 
42
42
  let lesserSum = 0;
43
- bst.lesserOrGreaterForeach(10, CP.lt, node => (lesserSum += node.key));
43
+ bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
44
44
  expect(lesserSum).toBe(45);
45
45
 
46
46
  expect(node15).toBeInstanceOf(BSTNode);
@@ -48,14 +48,15 @@ describe('BST operations test', () => {
48
48
  const node11 = bst.get(11);
49
49
  expect(node11).toBeInstanceOf(BSTNode);
50
50
 
51
- const dfsInorderNodes = bst.dfs('in', 'node');
51
+ const dfsInorderNodes = bst.dfs(node => node, 'in');
52
52
  expect(dfsInorderNodes[0].key).toBe(1);
53
53
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
54
54
 
55
55
  bst.perfectlyBalance();
56
56
  expect(bst.isPerfectlyBalanced()).toBe(true);
57
57
 
58
- const bfsNodesAfterBalanced = bst.bfs('node');
58
+ const bfsNodesAfterBalanced: BSTNode<number>[] = [];
59
+ bst.bfs(node => bfsNodesAfterBalanced.push(node));
59
60
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
60
61
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
61
62
 
@@ -173,12 +174,14 @@ describe('BST operations test', () => {
173
174
 
174
175
  expect(bst.isAVLBalanced()).toBe(false);
175
176
 
176
- const bfsIDs = bst.bfs();
177
+ const bfsIDs: number[] = [];
178
+ bst.bfs(node => bfsIDs.push(node.key));
177
179
  expect(bfsIDs[0]).toBe(2);
178
180
  expect(bfsIDs[1]).toBe(12);
179
181
  expect(bfsIDs[2]).toBe(16);
180
182
 
181
- const bfsNodes = bst.bfs('node');
183
+ const bfsNodes: BSTNode<number>[] = [];
184
+ bst.bfs(node => bfsNodes.push(node));
182
185
  expect(bfsNodes[0].key).toBe(2);
183
186
  expect(bfsNodes[1].key).toBe(12);
184
187
  expect(bfsNodes[2].key).toBe(16);
@@ -222,10 +225,10 @@ describe('BST operations test', () => {
222
225
  expect(node6 && objBST.getHeight(node6)).toBe(2);
223
226
  expect(node6 && objBST.getDepth(node6)).toBe(3);
224
227
 
225
- const nodeId10 = objBST.get(10, 'key');
228
+ const nodeId10 = objBST.get(10);
226
229
  expect(nodeId10?.key).toBe(10);
227
230
 
228
- const nodeVal9 = objBST.get(9, 'key');
231
+ const nodeVal9 = objBST.get(9);
229
232
  expect(nodeVal9?.key).toBe(9);
230
233
 
231
234
  const leftMost = objBST.getLeftMost();
@@ -237,11 +240,11 @@ describe('BST operations test', () => {
237
240
  expect(minNodeBySpecificNode?.key).toBe(12);
238
241
 
239
242
  let subTreeSum = 0;
240
- node15 && objBST.subTreeForeach(node15, node => (subTreeSum += node.key));
243
+ node15 && objBST.subTreeTraverse(node => (subTreeSum += node.key), node15);
241
244
  expect(subTreeSum).toBe(70);
242
245
 
243
246
  let lesserSum = 0;
244
- objBST.lesserOrGreaterForeach(10, CP.lt, node => (lesserSum += node.key));
247
+ objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
245
248
  expect(lesserSum).toBe(45);
246
249
 
247
250
  expect(node15).toBeInstanceOf(BSTNode);
@@ -249,14 +252,15 @@ describe('BST operations test', () => {
249
252
  const node11 = objBST.get(11);
250
253
  expect(node11).toBeInstanceOf(BSTNode);
251
254
 
252
- const dfsInorderNodes = objBST.dfs('in', 'node');
255
+ const dfsInorderNodes = objBST.dfs(node => node, 'in');
253
256
  expect(dfsInorderNodes[0].key).toBe(1);
254
257
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
255
258
 
256
259
  objBST.perfectlyBalance();
257
260
  expect(objBST.isPerfectlyBalanced()).toBe(true);
258
261
 
259
- const bfsNodesAfterBalanced = objBST.bfs('node');
262
+ const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
263
+ objBST.bfs(node => bfsNodesAfterBalanced.push(node));
260
264
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
261
265
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
262
266
 
@@ -374,12 +378,14 @@ describe('BST operations test', () => {
374
378
 
375
379
  expect(objBST.isAVLBalanced()).toBe(false);
376
380
 
377
- const bfsIDs = objBST.bfs();
381
+ const bfsIDs: number[] = [];
382
+ objBST.bfs(node => bfsIDs.push(node.key));
378
383
  expect(bfsIDs[0]).toBe(2);
379
384
  expect(bfsIDs[1]).toBe(12);
380
385
  expect(bfsIDs[2]).toBe(16);
381
386
 
382
- const bfsNodes = objBST.bfs('node');
387
+ const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
388
+ objBST.bfs(node => bfsNodes.push(node));
383
389
  expect(bfsNodes[0].key).toBe(2);
384
390
  expect(bfsNodes[1].key).toBe(12);
385
391
  expect(bfsNodes[2].key).toBe(16);
@@ -396,11 +402,11 @@ describe('BST Performance test', function () {
396
402
 
397
403
  it(`Observe the time consumption of BST.dfs be good`, function () {
398
404
  const startDFS = performance.now();
399
- const dfs = bst.dfs();
405
+ const dfs = bst.dfs(node => node);
400
406
  isDebug && console.log('---bfs', performance.now() - startDFS, dfs.length);
401
407
  });
402
408
 
403
- it('Should the time consumption of lesserOrGreaterForeach fitting O(n log n)', function () {
409
+ it('Should the time consumption of lesserOrGreaterTraverse fitting O(n log n)', function () {
404
410
  const nodes: number[] = [];
405
411
  for (let i = 0; i < inputSize; i++) {
406
412
  nodes.push(i);
@@ -409,9 +415,33 @@ describe('BST Performance test', function () {
409
415
  bst.addMany(nodes);
410
416
  isDebug && console.log('---add', performance.now() - start);
411
417
  const startL = performance.now();
412
- bst.lesserOrGreaterForeach(inputSize / 2, CP.lt, node => {
413
- return node.key - 1;
414
- });
415
- isDebug && console.log('---lesserOrGreaterForeach', performance.now() - startL);
418
+ bst.lesserOrGreaterTraverse(
419
+ node => {
420
+ node.key - 1;
421
+ },
422
+ CP.lt,
423
+ inputSize / 2
424
+ );
425
+ isDebug && console.log('---lesserOrGreaterTraverse', performance.now() - startL);
426
+ });
427
+
428
+ it('Should the time consumption of listLevels fitting well', function () {
429
+ const nodes: number[] = [];
430
+ for (let i = 0; i < inputSize; i++) {
431
+ nodes.push(i);
432
+ }
433
+ const start = performance.now();
434
+ bst.addMany(nodes);
435
+ isDebug && console.log('---add', performance.now() - start);
436
+ const startL = performance.now();
437
+ const arr: number[][] = [];
438
+ bst.bfs((node, level) => {
439
+ if (level !== undefined) {
440
+ if (!arr[level]) arr[level] = [];
441
+ arr[level].push(node.key);
442
+ }
443
+ }, true);
444
+ isDebug && console.log('---listLevels', arr);
445
+ isDebug && console.log('---listLevels', performance.now() - startL);
416
446
  });
417
447
  });
@@ -24,7 +24,8 @@ describe('Overall BinaryTree Test', () => {
24
24
  expect(bst.get(6)).toBeNull();
25
25
  bst.isAVLBalanced(); // true or false
26
26
  expect(bst.isAVLBalanced()).toBe(true);
27
- const bfsIDs = bst.bfs();
27
+ const bfsIDs: number[] = [];
28
+ bst.bfs(node => bfsIDs.push(node.key));
28
29
  bfsIDs[0] === 11; // true
29
30
  expect(bfsIDs[0]).toBe(11);
30
31
 
@@ -7,7 +7,7 @@ describe('Red-Black Tree Tests', () => {
7
7
  // tree = new RBTree<RBTreeNode<number>>();
8
8
  // });
9
9
 
10
- test('Insertion and In-order Traversal', () => {
10
+ test('Insertion and In-order Traverse', () => {
11
11
  // tree.add(5);
12
12
  // tree.add(3);
13
13
  // tree.add(7);
@@ -16,9 +16,9 @@ describe('Red-Black Tree Tests', () => {
16
16
  // tree.add(6);
17
17
  // tree.add(8);
18
18
  //
19
- // const inOrderTraversal: number[] = tree.DFS('in')
19
+ // const inOrderTraverse: number[] = tree.DFS('in')
20
20
  //
21
- // expect(inOrderTraversal).toEqual([2, 3, 4, 5, 6, 7, 8]);
21
+ // expect(inOrderTraverse).toEqual([2, 3, 4, 5, 6, 7, 8]);
22
22
  });
23
23
 
24
24
  test('Deletion', () => {
@@ -35,9 +35,9 @@ describe('Red-Black Tree Tests', () => {
35
35
  // expect(tree.has(3)).toBe(false);
36
36
  //
37
37
  // // Perform in-order traversal to check if the tree is still balanced
38
- // const inOrderTraversal: number[] = tree.DFS('in');
38
+ // const inOrderTraverse: number[] = tree.DFS('in');
39
39
  //
40
40
  //
41
- // expect(inOrderTraversal).toEqual([2, 4, 5, 6, 7, 8]);
41
+ // expect(inOrderTraverse).toEqual([2, 4, 5, 6, 7, 8]);
42
42
  });
43
43
  });
@@ -16,7 +16,6 @@ describe('TreeMultiset operations test', () => {
16
16
 
17
17
  expect(treeMultiset.size).toBe(16);
18
18
  expect(treeMultiset.count).toBe(18);
19
- expect(treeMultiset.bfs('key'));
20
19
 
21
20
  expect(treeMultiset.has(6));
22
21
 
@@ -25,13 +24,13 @@ describe('TreeMultiset operations test', () => {
25
24
  const nodeId10 = treeMultiset.get(10);
26
25
  expect(nodeId10?.key).toBe(10);
27
26
 
28
- const nodeVal9 = treeMultiset.get(9, 'val');
27
+ const nodeVal9 = treeMultiset.get(9, node => node.val);
29
28
  expect(nodeVal9?.key).toBe(9);
30
29
 
31
- const nodesByCount1 = treeMultiset.getNodesByCount(1);
30
+ const nodesByCount1 = treeMultiset.getNodes(1, node => node.count);
32
31
  expect(nodesByCount1.length).toBe(14);
33
32
 
34
- const nodesByCount2 = treeMultiset.getNodesByCount(2);
33
+ const nodesByCount2 = treeMultiset.getNodes(2, node => node.count);
35
34
  expect(nodesByCount2.length).toBe(2);
36
35
  const leftMost = treeMultiset.getLeftMost();
37
36
  expect(leftMost?.key).toBe(1);
@@ -41,29 +40,25 @@ describe('TreeMultiset operations test', () => {
41
40
  expect(minNodeBySpecificNode?.key).toBe(12);
42
41
 
43
42
  let subTreeSum = 0;
44
- node15 && treeMultiset.subTreeForeach(15, (node: TreeMultisetNode<number>) => (subTreeSum += node.key));
43
+ node15 && treeMultiset.subTreeTraverse((node: TreeMultisetNode<number>) => (subTreeSum += node.key), 15);
45
44
  expect(subTreeSum).toBe(70);
46
45
  let lesserSum = 0;
47
- treeMultiset.lesserOrGreaterForeach(10, CP.lt, (node: TreeMultisetNode<number>) => (lesserSum += node.key));
46
+ treeMultiset.lesserOrGreaterTraverse((node: TreeMultisetNode<number>) => (lesserSum += node.key), CP.lt, 10);
48
47
  expect(lesserSum).toBe(45);
49
48
 
50
49
  expect(node15 instanceof TreeMultisetNode);
51
50
  if (node15 instanceof TreeMultisetNode) {
52
- const subTreeAdd = treeMultiset.subTreeForeach(15, (node: TreeMultisetNode<number>) => (node.count += 1));
51
+ const subTreeAdd = treeMultiset.subTreeTraverse((node: TreeMultisetNode<number>) => (node.count += 1), 15);
53
52
  expect(subTreeAdd);
54
53
  }
55
54
  const node11 = treeMultiset.get(11);
56
55
  expect(node11 instanceof TreeMultisetNode);
57
56
  if (node11 instanceof TreeMultisetNode) {
58
- const allGreaterNodesAdded = treeMultiset.lesserOrGreaterForeach(
59
- 11,
60
- CP.gt,
61
- (node: TreeMultisetNode<number>) => (node.count += 2)
62
- );
57
+ const allGreaterNodesAdded = treeMultiset.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 11);
63
58
  expect(allGreaterNodesAdded);
64
59
  }
65
60
 
66
- const dfsInorderNodes = treeMultiset.dfs('in', 'node');
61
+ const dfsInorderNodes = treeMultiset.dfs(node => node, 'in');
67
62
  expect(dfsInorderNodes[0].key).toBe(1);
68
63
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
69
64
  expect(treeMultiset.isPerfectlyBalanced()).toBe(false);
@@ -73,7 +68,7 @@ describe('TreeMultiset operations test', () => {
73
68
  expect(treeMultiset.isPerfectlyBalanced()).toBe(true);
74
69
  expect(treeMultiset.isAVLBalanced()).toBe(true);
75
70
 
76
- const bfsNodesAfterBalanced = treeMultiset.bfs('node');
71
+ const bfsNodesAfterBalanced = treeMultiset.bfs(node => node);
77
72
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
78
73
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
79
74
 
@@ -194,13 +189,13 @@ describe('TreeMultiset operations test', () => {
194
189
 
195
190
  expect(treeMultiset.isAVLBalanced()).toBe(true);
196
191
 
197
- const bfsIDs = treeMultiset.bfs();
192
+ const bfsIDs = treeMultiset.bfs(node => node.key);
198
193
 
199
194
  expect(bfsIDs[0]).toBe(12);
200
195
  expect(bfsIDs[1]).toBe(2);
201
196
  expect(bfsIDs[2]).toBe(16);
202
197
 
203
- const bfsNodes = treeMultiset.bfs('node');
198
+ const bfsNodes = treeMultiset.bfs(node => node);
204
199
 
205
200
  expect(bfsNodes[0].key).toBe(12);
206
201
  expect(bfsNodes[1].key).toBe(2);
@@ -284,7 +279,7 @@ describe('TreeMultiset operations test', () => {
284
279
  // expect(allGreaterNodesAdded).toBeDefined();
285
280
  // }
286
281
  //
287
- // const dfsInorderNodes = objTreeMultiset.dfs('in', 'node');
282
+ // const dfsInorderNodes = objTreeMultiset.dfs(node => node, 'in');
288
283
  // expect(dfsInorderNodes[0].key).toBe(1);
289
284
  // expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
290
285
  //
@@ -474,18 +469,18 @@ describe('TreeMultiset Performance test', function () {
474
469
 
475
470
  it(`Observe the time consumption of TreeMultiset.dfs be good`, function () {
476
471
  const startDFS = performance.now();
477
- const dfs = treeMS.dfs();
472
+ const dfs = treeMS.dfs(node => node);
478
473
  isDebug && console.log('---bfs', performance.now() - startDFS, dfs.length);
479
474
  });
480
475
 
481
- it('Should the time consumption of lesserOrGreaterForeach fitting O(n log n)', function () {
476
+ it('Should the time consumption of lesserOrGreaterTraverse fitting O(n log n)', function () {
482
477
  const start = performance.now();
483
478
  for (let i = 0; i < inputSize; i++) {
484
479
  treeMS.add(i);
485
480
  }
486
481
  isDebug && console.log('---add', performance.now() - start);
487
482
  const startL = performance.now();
488
- treeMS.lesserOrGreaterForeach(inputSize / 2, CP.lt, (node: TreeMultisetNode<number>) => (node.count += 1));
489
- isDebug && console.log('---lesserOrGreaterForeach', performance.now() - startL);
483
+ treeMS.lesserOrGreaterTraverse((node: TreeMultisetNode<number>) => (node.count += 1), CP.lt, inputSize / 2);
484
+ isDebug && console.log('---lesserOrGreaterTraverse', performance.now() - startL);
490
485
  });
491
486
  });
@@ -90,7 +90,7 @@ describe('MaxPriorityQueue Performance Test', () => {
90
90
  }
91
91
  }
92
92
  const cost = performance.now() - startTime;
93
- expect(cost).toBeLessThan(bigO.LINEAR * 20);
93
+ expect(cost).toBeLessThan(bigO.LINEAR * 30);
94
94
  expect(prev).toBeGreaterThan(0);
95
95
  });
96
96