diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b6e3a5..cdca002 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
- [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
- [`auto-changelog`](https://github.com/CookPete/auto-changelog)
-## [v1.43.3](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
+## [v1.44.0](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
### Changes
diff --git a/README.md b/README.md
index 17d2ba0..dc4a89f 100644
--- a/README.md
+++ b/README.md
@@ -735,49 +735,49 @@ optimal approach to data structure design.
[//]: # (No deletion!!! Start of Replace Section)
avl-tree
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 35.38 | 28.26 | 0.00 |
10,000 add & delete randomly | 80.65 | 12.40 | 0.01 |
10,000 addMany | 46.45 | 21.53 | 9.97e-4 |
10,000 get | 31.59 | 31.66 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 33.23 | 30.09 | 0.00 |
10,000 add & delete randomly | 71.07 | 14.07 | 0.00 |
10,000 addMany | 40.89 | 24.45 | 4.42e-4 |
10,000 get | 28.00 | 35.72 | 3.66e-4 |
binary-tree
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 add randomly | 13.01 | 76.84 | 7.71e-4 |
1,000 add & delete randomly | 16.82 | 59.46 | 0.00 |
1,000 addMany | 10.46 | 95.62 | 2.13e-4 |
1,000 get | 18.44 | 54.22 | 2.49e-4 |
1,000 dfs | 163.31 | 6.12 | 0.01 |
1,000 bfs | 58.07 | 17.22 | 0.00 |
1,000 morris | 273.11 | 3.66 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 add randomly | 12.40 | 80.64 | 1.37e-4 |
1,000 add & delete randomly | 16.13 | 61.98 | 8.55e-4 |
1,000 addMany | 10.34 | 96.68 | 1.34e-4 |
1,000 get | 18.65 | 53.63 | 8.17e-4 |
1,000 dfs | 155.93 | 6.41 | 6.00e-4 |
1,000 bfs | 56.08 | 17.83 | 2.98e-4 |
1,000 morris | 257.05 | 3.89 | 0.00 |
bst
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 33.44 | 29.91 | 5.09e-4 |
10,000 add & delete randomly | 76.03 | 13.15 | 0.00 |
10,000 addMany | 32.26 | 31.00 | 0.00 |
10,000 get | 32.75 | 30.53 | 0.01 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 28.53 | 35.05 | 9.51e-4 |
10,000 add & delete randomly | 66.89 | 14.95 | 9.60e-4 |
10,000 addMany | 30.94 | 32.32 | 0.01 |
10,000 get | 28.18 | 35.48 | 4.43e-4 |
rb-tree
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 add | 99.27 | 10.07 | 0.01 |
100,000 add & delete randomly | 233.22 | 4.29 | 0.01 |
100,000 getNode | 148.41 | 6.74 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 add | 87.93 | 11.37 | 0.00 |
100,000 add & delete randomly | 218.68 | 4.57 | 0.01 |
100,000 getNode | 99.74 | 10.03 | 7.04e-4 |
directed-graph
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 addVertex | 0.11 | 9381.52 | 3.21e-6 |
1,000 addEdge | 6.36 | 157.14 | 7.19e-4 |
1,000 getVertex | 0.05 | 2.09e+4 | 2.72e-6 |
1,000 getEdge | 24.66 | 40.55 | 0.00 |
tarjan | 219.65 | 4.55 | 0.01 |
tarjan all | 239.68 | 4.17 | 0.04 |
topologicalSort | 216.14 | 4.63 | 0.07 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 addVertex | 0.11 | 9305.58 | 1.07e-5 |
1,000 addEdge | 7.66 | 130.50 | 0.00 |
1,000 getVertex | 0.05 | 2.03e+4 | 4.70e-6 |
1,000 getEdge | 27.22 | 36.74 | 0.01 |
tarjan | 186.49 | 5.36 | 0.01 |
tarjan all | 190.28 | 5.26 | 0.00 |
topologicalSort | 157.12 | 6.36 | 0.00 |
hash-map
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 set | 19.50 | 51.27 | 0.01 |
10,000 set & get | 38.20 | 26.18 | 0.01 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 set | 16.07 | 62.24 | 3.45e-4 |
10,000 set & get | 34.83 | 28.71 | 5.83e-4 |
heap
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add & pop | 4.86 | 205.69 | 7.04e-4 |
10,000 fib add & pop | 386.50 | 2.59 | 0.03 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add & pop | 4.63 | 215.97 | 4.24e-5 |
10,000 fib add & pop | 380.19 | 2.63 | 0.07 |
doubly-linked-list
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 unshift | 243.46 | 4.11 | 0.05 |
1,000,000 unshift & shift | 178.49 | 5.60 | 0.02 |
1,000,000 insertBefore | 326.38 | 3.06 | 0.07 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 unshift | 218.86 | 4.57 | 0.07 |
1,000,000 unshift & shift | 171.50 | 5.83 | 0.02 |
1,000,000 insertBefore | 328.27 | 3.05 | 0.06 |
singly-linked-list
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 push & pop | 232.85 | 4.29 | 0.01 |
10,000 insertBefore | 255.90 | 3.91 | 0.01 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 push & pop | 224.78 | 4.45 | 0.01 |
10,000 insertBefore | 253.69 | 3.94 | 0.02 |
max-priority-queue
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 refill & poll | 11.88 | 84.15 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 refill & poll | 11.98 | 83.50 | 0.00 |
priority-queue
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add & pop | 12.60 | 79.35 | 1.40e-4 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add & pop | 12.65 | 79.04 | 8.45e-4 |
deque
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 226.32 | 4.42 | 0.03 |
1,000,000 shift | 26.09 | 38.33 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 231.26 | 4.32 | 0.04 |
1,000,000 shift | 28.05 | 35.65 | 0.01 |
queue
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 45.45 | 22.00 | 0.01 |
1,000,000 push & shift | 82.87 | 12.07 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 48.01 | 20.83 | 0.02 |
1,000,000 push & shift | 83.34 | 12.00 | 0.00 |
stack
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 43.95 | 22.75 | 0.01 |
1,000,000 push & pop | 50.91 | 19.64 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 43.24 | 23.13 | 0.01 |
1,000,000 push & pop | 57.96 | 17.25 | 0.02 |
trie
-
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 push | 50.20 | 19.92 | 0.00 |
100,000 getWords | 110.08 | 9.08 | 0.01 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 push | 58.12 | 17.21 | 0.02 |
100,000 getWords | 144.39 | 6.93 | 0.13 |
[//]: # (No deletion!!! End of Replace Section)
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 4a089f0..6449c6b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "data-structure-typed",
- "version": "1.43.3",
+ "version": "1.44.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "data-structure-typed",
- "version": "1.43.3",
+ "version": "1.44.0",
"license": "MIT",
"devDependencies": {
"@swc/core": "^1.3.96",
@@ -17,10 +17,11 @@
"@typescript-eslint/eslint-plugin": "^6.7.4",
"@typescript-eslint/parser": "^6.7.4",
"auto-changelog": "^2.4.0",
- "avl-tree-typed": "^1.42.5",
+ "avl-tree-typed": "^1.44.0",
"benchmark": "^2.1.4",
- "binary-tree-typed": "^1.42.5",
- "bst-typed": "^1.42.5",
+ "binary-tree-typed": "^1.44.0",
+ "bst-typed": "^1.44.0",
+ "data-structure-typed": "^1.44.0",
"dependency-cruiser": "^14.1.0",
"eslint": "^8.50.0",
"eslint-config-prettier": "^9.0.0",
@@ -28,7 +29,7 @@
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.28.1",
"fast-glob": "^3.3.1",
- "heap-typed": "^1.42.5",
+ "heap-typed": "^1.44.0",
"istanbul-badges-readme": "^1.8.5",
"jest": "^29.7.0",
"js-sdsl": "^4.4.2",
@@ -3001,12 +3002,12 @@
}
},
"node_modules/avl-tree-typed": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/avl-tree-typed/-/avl-tree-typed-1.43.1.tgz",
- "integrity": "sha512-XeCTZGn4Wo5HjO1gwqtZ80Q3nBn2I2PB7WVemeyhHAGzvXCzjDOvtzFzHUHw/VebIQEXYacIzPqyjCZwSRH/aQ==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/avl-tree-typed/-/avl-tree-typed-1.44.0.tgz",
+ "integrity": "sha512-XaKEv9Y6IR7vCy2n5NPOczPnuPPny801MGQIN9supoz1yku7wfN99JBtZI2VN+F60eNo302pTEelgDV8AYiV1Q==",
"dev": true,
"dependencies": {
- "data-structure-typed": "^1.43.1"
+ "data-structure-typed": "^1.44.0"
}
},
"node_modules/babel-jest": {
@@ -3200,12 +3201,12 @@
}
},
"node_modules/binary-tree-typed": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/binary-tree-typed/-/binary-tree-typed-1.43.1.tgz",
- "integrity": "sha512-3j3QX1vuk0WNfYLgC+yeYdAn5vRT/kO/8+OS94B924PCVPRNddOyO3rSVl0aJq/N0ihUR8z0brQnR/HC9Mo09A==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/binary-tree-typed/-/binary-tree-typed-1.44.0.tgz",
+ "integrity": "sha512-f+g6X8prsdlzx++ac44zER0QtrdnL6I7hIgHBR1JuLOve4Hcrb5fkNAXtQwA4vOtmghtGYcGl4IOlhtyRMuF/w==",
"dev": true,
"dependencies": {
- "data-structure-typed": "^1.43.1"
+ "data-structure-typed": "^1.44.0"
}
},
"node_modules/brace-expansion": {
@@ -3284,12 +3285,12 @@
}
},
"node_modules/bst-typed": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/bst-typed/-/bst-typed-1.43.1.tgz",
- "integrity": "sha512-IeSQ8a6z1A8C0csPb4pqQOQNgQi1NnH/GfLL4Nx2aSA1NvF25nXK+f61Vz+t3a4pzcgmBjI+wYMZNYmSLrZ3NQ==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/bst-typed/-/bst-typed-1.44.0.tgz",
+ "integrity": "sha512-PQ75B1aWXE5fuenMZ3lAIVV+Ek/7OJp2kJty0sGlVvtR0MENIz8MnT0tNt+3XzHjbhml0gcvh5KNaqCKyQIdSQ==",
"dev": true,
"dependencies": {
- "data-structure-typed": "^1.43.1"
+ "data-structure-typed": "^1.44.0"
}
},
"node_modules/buffer-from": {
@@ -3692,9 +3693,9 @@
}
},
"node_modules/data-structure-typed": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/data-structure-typed/-/data-structure-typed-1.43.1.tgz",
- "integrity": "sha512-STWriSmxUv78EYJiBtyPPDzEX1xfSzOvZFamUorHxEoWw1m5Sl0TESsC2biNIJ/GXZWhhJG7Tef6hseXWZ6GVw==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/data-structure-typed/-/data-structure-typed-1.44.0.tgz",
+ "integrity": "sha512-mS/JWpl/evwqnWtIRmGqvwHR6NEbzuAp3AkK8keq1J45vctxryX8YKTS56u5JHE2MNTZc+5Tt+H5ltmLfz18SQ==",
"dev": true
},
"node_modules/debug": {
@@ -5059,12 +5060,12 @@
}
},
"node_modules/heap-typed": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/heap-typed/-/heap-typed-1.43.1.tgz",
- "integrity": "sha512-nKRcoir8MJF4qJFp6na1DZNWBl2wi5f5BM/qlrvkMina9Dxbphwrl7pPtlcJ3ohdl3lXTjZNrCU7dWntH4djaA==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/heap-typed/-/heap-typed-1.44.0.tgz",
+ "integrity": "sha512-QKmfpcZV3Fc0X5uopTejcaElLvEZe/D7ZdCdeAQdQnJpLGUD+gsVWNJeHKl4ek2P+1w/PNkbOgv6RJ4Cr6MM6w==",
"dev": true,
"dependencies": {
- "data-structure-typed": "^1.43.1"
+ "data-structure-typed": "^1.44.0"
}
},
"node_modules/html-escaper": {
diff --git a/package.json b/package.json
index 6ecaa9f..317f722 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "data-structure-typed",
- "version": "1.43.3",
+ "version": "1.44.1",
"description": "Data Structures of Javascript & TypeScript. Binary Tree, BST, Graph, Heap, Priority Queue, Linked List, Queue, Deque, Stack, AVL Tree, Tree Multiset, Trie, Directed Graph, Undirected Graph, Singly Linked List, Doubly Linked List, Max Heap, Max Priority Queue, Min Heap, Min Priority Queue.",
"main": "dist/cjs/index.js",
"module": "dist/mjs/index.js",
@@ -20,6 +20,7 @@
"build:umd": "tsup",
"build:docs": "typedoc --out docs ./src",
"test:unit": "jest --runInBand",
+ "test": "npm run test:unit",
"test:integration": "npm run update:subs && jest --config jest.integration.config.js",
"test:perf": "ts-node test/performance/reportor.ts",
"check": "tsc --noEmit",
@@ -32,7 +33,7 @@
"format:test": "prettier --write 'test/**/*.{js,ts}'",
"format": "npm run format:src && npm run format:test",
"ci": "env && git fetch --tags && npm run check && npm run lint && npm run build && npm run test:unit && npm run changelog",
- "update:subs": "npm i avl-tree-typed binary-tree-typed bst-typed heap-typed --save-dev",
+ "update:subs": "npm i avl-tree-typed binary-tree-typed bst-typed heap-typed data-structure-typed --save-dev",
"install:all-subs": "npm i avl-tree-typed binary-tree-typed bst-typed deque-typed directed-graph-typed doubly-linked-list-typed graph-typed heap-typed linked-list-typed max-heap-typed max-priority-queue-typed min-heap-typed min-priority-queue-typed priority-queue-typed singly-linked-list-typed stack-typed tree-multimap-typed trie-typed undirected-graph-typed queue-typed --save-dev",
"changelog": "auto-changelog",
"coverage:badge": "istanbul-badges-readme",
@@ -63,10 +64,11 @@
"@typescript-eslint/eslint-plugin": "^6.7.4",
"@typescript-eslint/parser": "^6.7.4",
"auto-changelog": "^2.4.0",
- "avl-tree-typed": "^1.42.5",
+ "avl-tree-typed": "^1.44.0",
"benchmark": "^2.1.4",
- "binary-tree-typed": "^1.42.5",
- "bst-typed": "^1.42.5",
+ "binary-tree-typed": "^1.44.0",
+ "bst-typed": "^1.44.0",
+ "data-structure-typed": "^1.44.0",
"dependency-cruiser": "^14.1.0",
"eslint": "^8.50.0",
"eslint-config-prettier": "^9.0.0",
@@ -74,7 +76,7 @@
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.28.1",
"fast-glob": "^3.3.1",
- "heap-typed": "^1.42.5",
+ "heap-typed": "^1.44.0",
"istanbul-badges-readme": "^1.8.5",
"jest": "^29.7.0",
"js-sdsl": "^4.4.2",
diff --git a/src/types/data-structures/graph/directed-graph.ts b/src/types/data-structures/graph/directed-graph.ts
index 45add08..e4fc9b6 100644
--- a/src/types/data-structures/graph/directed-graph.ts
+++ b/src/types/data-structures/graph/directed-graph.ts
@@ -1,8 +1,2 @@
// 0 means unknown, 1 means visiting, 2 means visited;
export type TopologicalStatus = 0 | 1 | 2;
-
-export enum TopologicalProperty {
- VAL = 'VAL',
- NODE = 'NODE',
- ID = 'ID'
-}
diff --git a/test/integration/all-in-one.ts b/test/integration/all-in-one.ts
new file mode 100644
index 0000000..313c16b
--- /dev/null
+++ b/test/integration/all-in-one.ts
@@ -0,0 +1,110 @@
+import {AVLTree, CP} from 'data-structure-typed';
+
+describe('AVL Tree Test from data-structure-typed', () => {
+ it('should perform various operations on a AVL Tree from data-structure-typed', () => {
+ const keys = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
+ const tree = new AVLTree();
+
+ for (const i of keys) tree.add(i, i);
+
+ const node6 = tree.get(6);
+
+ expect(node6 && tree.getHeight(node6)).toBe(3);
+ expect(node6 && tree.getDepth(node6)).toBe(1);
+
+ const getValueById = tree.get(10);
+ expect(getValueById).toBe(10);
+
+ const getMinNodeByRoot = tree.getLeftMost();
+ expect(getMinNodeByRoot?.key).toBe(1);
+
+ const node15 = tree.getNode(15);
+ const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
+ expect(getMinNodeBySpecificNode?.key).toBe(12);
+
+ let subTreeSum = 0;
+ node15 && tree.subTreeTraverse(node => (subTreeSum += node.key), 15);
+ expect(subTreeSum).toBe(70);
+
+ let lesserSum = 0;
+ tree.lesserOrGreaterTraverse(node => (lesserSum += node.key), CP.lt, 10);
+ expect(lesserSum).toBe(45);
+
+ // 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.
+ expect(node15?.value).toBe(15);
+
+ const dfs = tree.dfs(node => node, 'in');
+ expect(dfs[0].key).toBe(1);
+ expect(dfs[dfs.length - 1].key).toBe(16);
+
+ tree.perfectlyBalance();
+ const bfs = tree.bfs(node => node);
+ expect(tree.isPerfectlyBalanced()).toBe(true);
+ expect(bfs[0].key).toBe(8);
+ expect(bfs[bfs.length - 1].key).toBe(16);
+
+ expect(tree.delete(11)[0].deleted?.key).toBe(11);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(node15 && tree.getHeight(node15)).toBe(2);
+
+ expect(tree.delete(1)[0].deleted?.key).toBe(1);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(4);
+
+ expect(tree.delete(4)[0].deleted?.key).toBe(4);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(4);
+
+ expect(tree.delete(10)[0].deleted?.key).toBe(10);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(15)[0].deleted?.key).toBe(15);
+ expect(tree.isAVLBalanced()).toBe(true);
+
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(5)[0].deleted?.key).toBe(5);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(13)[0].deleted?.key).toBe(13);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(3)[0].deleted?.key).toBe(3);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(8)[0].deleted?.key).toBe(8);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(3);
+
+ expect(tree.delete(6)[0].deleted?.key).toBe(6);
+ expect(tree.delete(6).length).toBe(0);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(2);
+
+ expect(tree.delete(7)[0].deleted?.key).toBe(7);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(2);
+
+ expect(tree.delete(9)[0].deleted?.key).toBe(9);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(2);
+ expect(tree.delete(14)[0].deleted?.key).toBe(14);
+ expect(tree.isAVLBalanced()).toBe(true);
+ expect(tree.getHeight()).toBe(1);
+
+ expect(tree.isAVLBalanced()).toBe(true);
+ const lastBFSIds = tree.bfs();
+ expect(lastBFSIds[0]).toBe(12);
+ expect(lastBFSIds[1]).toBe(2);
+ expect(lastBFSIds[2]).toBe(16);
+
+ const lastBFSNodes = tree.bfs(node => node);
+ expect(lastBFSNodes[0].key).toBe(12);
+ expect(lastBFSNodes[1].key).toBe(2);
+ expect(lastBFSNodes[2].key).toBe(16);
+ });
+});
diff --git a/test/performance/reportor.ts b/test/performance/reportor.ts
index 628e1b0..6d2f25e 100644
--- a/test/performance/reportor.ts
+++ b/test/performance/reportor.ts
@@ -107,7 +107,7 @@ const composeReport = () => {
htmlTables // New content to be inserted
);
fs.writeFileSync(htmlFilePath, html);
- console.log(`Performance ${BOLD}${GREEN}report${END} file generated`);
+ console.log(`Performance ${BOLD}${GREEN}report${END} file generated in ${BOLD}${GREEN}${reportDistPath}${END}`);
};
function replaceMarkdownContent(startMarker: string, endMarker: string, newText: string) {
@@ -135,7 +135,7 @@ function replaceMarkdownContent(startMarker: string, endMarker: string, newText:
if (err) {
console.error(`Unable to write to ${filePath}:`, err);
} else {
- console.log(`The content has been successfully replaced in ${filePath}!`);
+ console.log(`The content has been successfully replaced in ${BOLD}${GREEN}${filePath}!${END}`);
}
});
});
diff --git a/test/unit/data-structures/binary-tree/rb-tree.test.ts b/test/unit/data-structures/binary-tree/rb-tree.test.ts
index 27884d4..96c29ed 100644
--- a/test/unit/data-structures/binary-tree/rb-tree.test.ts
+++ b/test/unit/data-structures/binary-tree/rb-tree.test.ts
@@ -478,13 +478,13 @@ describe('RedBlackTree', () => {
for (let i = 0; i < arr.length; i++) {
tree.add(arr[i]);
}
- console.log(performance.now() - tS);
+ isDebug && console.log(performance.now() - tS);
const cS = performance.now();
for (let i = 0; i < arr.length; i++) {
competitor.setElement(arr[i], arr[i]);
}
- console.log(performance.now() - cS);
+ isDebug && console.log(performance.now() - cS);
});
});