data-structure-typed 1.50.9 → 1.51.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.
- package/CHANGELOG.md +1 -1
- package/README.md +14 -14
- package/benchmark/report.html +37 -1
- package/benchmark/report.json +378 -12
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +2 -2
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +73 -73
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.js +39 -39
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +3 -3
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +2 -2
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +2 -2
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +73 -73
- package/dist/mjs/data-structures/binary-tree/bst.js +39 -39
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +3 -3
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +2 -2
- package/dist/umd/data-structure-typed.js +119 -119
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +7 -7
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
- package/src/data-structures/binary-tree/avl-tree.ts +2 -2
- package/src/data-structures/binary-tree/binary-tree.ts +71 -71
- package/src/data-structures/binary-tree/bst.ts +33 -33
- package/src/data-structures/binary-tree/rb-tree.ts +3 -3
- package/src/data-structures/binary-tree/tree-multi-map.ts +2 -2
- package/test/integration/avl-tree.test.ts +4 -4
- package/test/integration/bst.test.ts +7 -7
- package/test/integration/index.html +2 -2
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +1 -0
- package/test/utils/big-o.ts +12 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AVLTree
|
|
1
|
+
import { AVLTree } from 'avl-tree-typed';
|
|
2
2
|
|
|
3
3
|
describe('AVL Tree Test', () => {
|
|
4
4
|
it('should perform various operations on a AVL Tree', () => {
|
|
@@ -40,17 +40,17 @@ describe('AVL Tree Test', () => {
|
|
|
40
40
|
expect(getMinNodeBySpecificNode?.key).toBe(12);
|
|
41
41
|
|
|
42
42
|
let subTreeSum = 0;
|
|
43
|
-
node15 && tree.dfs(node => (subTreeSum += node.key), '
|
|
43
|
+
node15 && tree.dfs(node => (subTreeSum += node.key), 'IN', 15);
|
|
44
44
|
expect(subTreeSum).toBe(70);
|
|
45
45
|
|
|
46
46
|
let lesserSum = 0;
|
|
47
|
-
tree.lesserOrGreaterTraverse(node => (lesserSum += node.key),
|
|
47
|
+
tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
|
|
48
48
|
expect(lesserSum).toBe(45);
|
|
49
49
|
|
|
50
50
|
// 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.
|
|
51
51
|
expect(node15?.value).toBe(15);
|
|
52
52
|
|
|
53
|
-
const dfs = tree.dfs(node => node, '
|
|
53
|
+
const dfs = tree.dfs(node => node, 'IN');
|
|
54
54
|
expect(dfs[0].key).toBe(1);
|
|
55
55
|
expect(dfs[dfs.length - 1].key).toBe(16);
|
|
56
56
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BST, BSTNode
|
|
1
|
+
import { BST, BSTNode } from 'bst-typed';
|
|
2
2
|
|
|
3
3
|
describe('Individual package BST operations test', () => {
|
|
4
4
|
it('should perform various operations on a Binary Search Tree with numeric values', () => {
|
|
@@ -34,11 +34,11 @@ describe('Individual package BST operations test', () => {
|
|
|
34
34
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
35
35
|
|
|
36
36
|
let subTreeSum = 0;
|
|
37
|
-
node15 && bst.dfs(node => (subTreeSum += node.key), '
|
|
37
|
+
node15 && bst.dfs(node => (subTreeSum += node.key), 'IN', 15);
|
|
38
38
|
expect(subTreeSum).toBe(70);
|
|
39
39
|
|
|
40
40
|
let lesserSum = 0;
|
|
41
|
-
bst.lesserOrGreaterTraverse(node => (lesserSum += node.key),
|
|
41
|
+
bst.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
|
|
42
42
|
expect(lesserSum).toBe(45);
|
|
43
43
|
|
|
44
44
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
@@ -46,7 +46,7 @@ describe('Individual package BST operations test', () => {
|
|
|
46
46
|
const node11 = bst.getNode(11);
|
|
47
47
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
48
48
|
|
|
49
|
-
const dfsInorderNodes = bst.dfs(node => node, '
|
|
49
|
+
const dfsInorderNodes = bst.dfs(node => node, 'IN');
|
|
50
50
|
expect(dfsInorderNodes[0].key).toBe(1);
|
|
51
51
|
expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
|
|
52
52
|
|
|
@@ -231,11 +231,11 @@ describe('Individual package BST operations test', () => {
|
|
|
231
231
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
232
232
|
|
|
233
233
|
let subTreeSum = 0;
|
|
234
|
-
node15 && objBST.dfs(node => (subTreeSum += node.key), '
|
|
234
|
+
node15 && objBST.dfs(node => (subTreeSum += node.key), 'IN', node15);
|
|
235
235
|
expect(subTreeSum).toBe(70);
|
|
236
236
|
|
|
237
237
|
let lesserSum = 0;
|
|
238
|
-
objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key),
|
|
238
|
+
objBST.lesserOrGreaterTraverse(node => (lesserSum += node.key), 'LT', 10);
|
|
239
239
|
expect(lesserSum).toBe(45);
|
|
240
240
|
|
|
241
241
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
@@ -243,7 +243,7 @@ describe('Individual package BST operations test', () => {
|
|
|
243
243
|
const node11 = objBST.getNode(11);
|
|
244
244
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
245
245
|
|
|
246
|
-
const dfsInorderNodes = objBST.dfs(node => node, '
|
|
246
|
+
const dfsInorderNodes = objBST.dfs(node => node, 'IN');
|
|
247
247
|
expect(dfsInorderNodes[0].key).toBe(1);
|
|
248
248
|
expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
|
|
249
249
|
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
const n = 1000000;
|
|
29
29
|
const startEn = performance.now();
|
|
30
30
|
for (let i = 0; i < n; i++) {
|
|
31
|
-
queue.
|
|
31
|
+
queue.push(i);
|
|
32
32
|
}
|
|
33
33
|
console.log((performance.now() - startEn).toFixed(2), `Queue ${n.toLocaleString()} enqueue `);
|
|
34
34
|
let last = 0;
|
|
35
35
|
const startTime = performance.now();
|
|
36
36
|
|
|
37
37
|
for (let i = 0; i < n; i++) {
|
|
38
|
-
last = queue.
|
|
38
|
+
last = queue.shift();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
console.log((performance.now() - startTime).toFixed(2), `Queue ${n.toLocaleString()} dequeue `);
|
|
@@ -45,6 +45,7 @@ describe('TreeMultiMap operations test1', () => {
|
|
|
45
45
|
expect(tmm.getMinHeight()).toBe(-1);
|
|
46
46
|
|
|
47
47
|
tmm.addMany([1, 6, 7, 2, 3, 4, 9, 11, 8, 5, 10, 12, 16, 14, 13, 15]);
|
|
48
|
+
// tmm.print()
|
|
48
49
|
expect(tmm.getHeight()).toBe(5);
|
|
49
50
|
expect(tmm.getMinHeight()).toBe(2);
|
|
50
51
|
});
|
package/test/utils/big-o.ts
CHANGED
|
@@ -205,3 +205,15 @@ export function logBigOMetrics(target: any, propertyKey: string, descriptor: Pro
|
|
|
205
205
|
|
|
206
206
|
return descriptor;
|
|
207
207
|
}
|
|
208
|
+
|
|
209
|
+
export const logPerf = function (fn: (...args: any[]) => any, args: any[], thisArg?: any) {
|
|
210
|
+
const start = performance.now();
|
|
211
|
+
if (thisArg) {
|
|
212
|
+
if (args && args.length > 0) fn.apply(thisArg, args);
|
|
213
|
+
else fn.apply(thisArg);
|
|
214
|
+
} else {
|
|
215
|
+
if (args && args.length > 0) fn(...args);
|
|
216
|
+
else fn();
|
|
217
|
+
}
|
|
218
|
+
console.log(`function running cost : ${(performance.now() - start).toFixed(2)} ms`);
|
|
219
|
+
};
|