data-structure-typed 1.41.7 → 1.41.8

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 (30) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +14 -11
  3. package/benchmark/report.html +14 -11
  4. package/benchmark/report.json +156 -205
  5. package/dist/cjs/src/data-structures/binary-tree/rb-tree.d.ts +5 -2
  6. package/dist/cjs/src/data-structures/binary-tree/rb-tree.js +15 -2
  7. package/dist/cjs/src/data-structures/binary-tree/rb-tree.js.map +1 -1
  8. package/dist/mjs/src/data-structures/binary-tree/rb-tree.d.ts +5 -2
  9. package/dist/mjs/src/data-structures/binary-tree/rb-tree.js +15 -2
  10. package/dist/umd/data-structure-typed.min.js +1 -1
  11. package/dist/umd/data-structure-typed.min.js.map +1 -1
  12. package/package.json +1 -1
  13. package/src/data-structures/binary-tree/binary-tree.ts +1 -1
  14. package/src/data-structures/binary-tree/bst.ts +1 -1
  15. package/src/data-structures/binary-tree/rb-tree.ts +18 -2
  16. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +6 -6
  17. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +7 -7
  18. package/test/performance/data-structures/binary-tree/bst.test.ts +6 -6
  19. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +32 -0
  20. package/test/performance/data-structures/graph/directed-graph.test.ts +4 -4
  21. package/test/performance/data-structures/heap/heap.test.ts +7 -7
  22. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +6 -6
  23. package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +7 -7
  24. package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
  25. package/test/performance/data-structures/queue/deque.test.ts +2 -2
  26. package/test/performance/data-structures/queue/queue.test.ts +2 -2
  27. package/test/performance/data-structures/trie/trie.test.ts +2 -2
  28. package/test/performance/reportor.ts +5 -6
  29. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +103 -103
  30. package/test/unit/data-structures/graph/undirected-graph.test.ts +6 -7
@@ -11,11 +11,11 @@ describe('RedBlackTree', () => {
11
11
  tree = new RedBlackTree();
12
12
  });
13
13
 
14
- describe('insert and getNode', () => {
15
- test('should insert and find a node in the tree', () => {
16
- tree.insert(10);
17
- tree.insert(20);
18
- tree.insert(5);
14
+ describe('add and getNode', () => {
15
+ test('should add and find a node in the tree', () => {
16
+ tree.add(10);
17
+ tree.add(20);
18
+ tree.add(5);
19
19
 
20
20
  expect(tree.getNode(10)).toBeInstanceOf(RBTreeNode);
21
21
  expect(tree.getNode(20)).toBeInstanceOf(RBTreeNode);
@@ -23,9 +23,9 @@ describe('RedBlackTree', () => {
23
23
  expect(tree.getNode(15)).toBe(null);
24
24
  });
25
25
 
26
- test('should insert and find nodes with negative keys', () => {
27
- tree.insert(-10);
28
- tree.insert(-20);
26
+ test('should add and find nodes with negative keys', () => {
27
+ tree.add(-10);
28
+ tree.add(-20);
29
29
 
30
30
  expect(tree.getNode(-10)).toBeInstanceOf(RBTreeNode);
31
31
  expect(tree.getNode(-20)).toBeInstanceOf(RBTreeNode);
@@ -34,18 +34,18 @@ describe('RedBlackTree', () => {
34
34
 
35
35
  describe('deleteNode', () => {
36
36
  test('should delete a node from the tree', () => {
37
- tree.insert(10);
38
- tree.insert(20);
39
- tree.insert(5);
37
+ tree.add(10);
38
+ tree.add(20);
39
+ tree.add(5);
40
40
  tree.delete(20);
41
41
 
42
42
  expect(tree.getNode(20)).toBe(null);
43
43
  });
44
44
 
45
45
  test('should handle deleting a non-existent node', () => {
46
- tree.insert(10);
47
- tree.insert(20);
48
- tree.insert(5);
46
+ tree.add(10);
47
+ tree.add(20);
48
+ tree.add(5);
49
49
  tree.delete(15);
50
50
 
51
51
  expect(tree.getNode(15)).toBe(null);
@@ -54,11 +54,11 @@ describe('RedBlackTree', () => {
54
54
 
55
55
  describe('minimum', () => {
56
56
  test('should find the minimum node in the tree', () => {
57
- tree.insert(10);
58
- tree.insert(20);
59
- tree.insert(5);
60
- tree.insert(15);
61
- tree.insert(3);
57
+ tree.add(10);
58
+ tree.add(20);
59
+ tree.add(5);
60
+ tree.add(15);
61
+ tree.add(3);
62
62
 
63
63
  const minNode = tree.getLeftMost(tree.root);
64
64
  expect(minNode.key).toBe(3);
@@ -72,11 +72,11 @@ describe('RedBlackTree', () => {
72
72
 
73
73
  describe('getRightMost', () => {
74
74
  test('should find the getRightMost node in the tree', () => {
75
- tree.insert(10);
76
- tree.insert(20);
77
- tree.insert(5);
78
- tree.insert(15);
79
- tree.insert(25);
75
+ tree.add(10);
76
+ tree.add(20);
77
+ tree.add(5);
78
+ tree.add(15);
79
+ tree.add(25);
80
80
 
81
81
  const maxNode = tree.getRightMost(tree.root);
82
82
  expect(maxNode.key).toBe(25);
@@ -90,11 +90,11 @@ describe('RedBlackTree', () => {
90
90
 
91
91
  describe('getSuccessor', () => {
92
92
  test('should find the getSuccessor of a node', () => {
93
- tree.insert(10);
94
- tree.insert(20);
95
- tree.insert(5);
96
- tree.insert(15);
97
- tree.insert(25);
93
+ tree.add(10);
94
+ tree.add(20);
95
+ tree.add(5);
96
+ tree.add(15);
97
+ tree.add(25);
98
98
 
99
99
  const node = tree.getNode(15);
100
100
  const successorNode = tree.getSuccessor(node);
@@ -103,8 +103,8 @@ describe('RedBlackTree', () => {
103
103
  });
104
104
 
105
105
  test('should handle a node with no getSuccessor', () => {
106
- tree.insert(10);
107
- tree.insert(5);
106
+ tree.add(10);
107
+ tree.add(5);
108
108
 
109
109
  const node = tree.getNode(10);
110
110
  const successorNode = tree.getSuccessor(node);
@@ -115,11 +115,11 @@ describe('RedBlackTree', () => {
115
115
 
116
116
  describe('getPredecessor', () => {
117
117
  test('should find the getPredecessor of a node', () => {
118
- tree.insert(10);
119
- tree.insert(20);
120
- tree.insert(5);
121
- tree.insert(15);
122
- tree.insert(25);
118
+ tree.add(10);
119
+ tree.add(20);
120
+ tree.add(5);
121
+ tree.add(15);
122
+ tree.add(25);
123
123
 
124
124
  const node = tree.getNode(20);
125
125
  const predecessorNode = tree.getPredecessor(node);
@@ -128,8 +128,8 @@ describe('RedBlackTree', () => {
128
128
  });
129
129
 
130
130
  test('should handle a node with no getPredecessor', () => {
131
- tree.insert(10);
132
- tree.insert(20);
131
+ tree.add(10);
132
+ tree.add(20);
133
133
 
134
134
  const node = tree.getNode(20);
135
135
  const predecessorNode = tree.getPredecessor(node);
@@ -146,69 +146,69 @@ describe('RedBlackTree', () => {
146
146
  tree = new RedBlackTree();
147
147
  });
148
148
 
149
- it('should insert nodes into the tree', () => {
150
- tree.insert(10);
149
+ it('should add nodes into the tree', () => {
150
+ tree.add(10);
151
151
  expect(tree.getNode(10)).toBeDefined();
152
- tree.insert(20);
152
+ tree.add(20);
153
153
  expect(tree.getNode(20)).toBeDefined();
154
- tree.insert(5);
154
+ tree.add(5);
155
155
  expect(tree.getNode(5)).toBeDefined();
156
156
  });
157
157
 
158
158
  it('should delete nodes from the tree', () => {
159
- tree.insert(10);
160
- tree.insert(20);
161
- tree.insert(5);
159
+ tree.add(10);
160
+ tree.add(20);
161
+ tree.add(5);
162
162
  tree.delete(20);
163
163
  expect(tree.getNode(20)).toBe(null);
164
164
  });
165
165
 
166
166
  it('should get the successor of a node', () => {
167
- tree.insert(10);
168
- tree.insert(20);
167
+ tree.add(10);
168
+ tree.add(20);
169
169
  const node = tree.getNode(10);
170
170
  const successor = tree.getSuccessor(node);
171
171
  expect(successor?.key).toBe(20);
172
172
  });
173
173
 
174
174
  it('should get the predecessor of a node', () => {
175
- tree.insert(10);
176
- tree.insert(20);
175
+ tree.add(10);
176
+ tree.add(20);
177
177
  const node = tree.getNode(20);
178
178
  const predecessor = tree.getPredecessor(node);
179
179
  expect(predecessor?.key).toBe(10);
180
180
  });
181
181
 
182
182
  it('should rotate nodes to the left', () => {
183
- tree.insert(10);
184
- tree.insert(20);
185
- tree.insert(5);
183
+ tree.add(10);
184
+ tree.add(20);
185
+ tree.add(5);
186
186
  const node = tree.getNode(10);
187
- tree.insert(15);
187
+ tree.add(15);
188
188
  // Verify that rotation has occurred
189
189
  expect(node.left.key).toBe(5);
190
190
  expect(node.right.key).toBe(20);
191
191
  });
192
192
 
193
193
  it('should rotate nodes to the right', () => {
194
- tree.insert(10);
195
- tree.insert(20);
196
- tree.insert(5);
194
+ tree.add(10);
195
+ tree.add(20);
196
+ tree.add(5);
197
197
  const node = tree.getNode(20);
198
- tree.insert(25);
198
+ tree.add(25);
199
199
  // Verify that rotation has occurred
200
200
  expect(node.left.key).toBe(0);
201
201
  expect(node.right.key).toBe(25);
202
202
  });
203
203
 
204
204
  it('should all node attributes fully conform to the red-black tree standards.', () => {
205
- tree.insert(10);
206
- tree.insert(20);
207
- tree.insert(5);
208
- tree.insert(15);
209
- tree.insert(21);
210
- tree.insert(6);
211
- tree.insert(2);
205
+ tree.add(10);
206
+ tree.add(20);
207
+ tree.add(5);
208
+ tree.add(15);
209
+ tree.add(21);
210
+ tree.add(6);
211
+ tree.add(2);
212
212
 
213
213
  let node10F = tree.getNode(10);
214
214
  let node20F = tree.getNode(20);
@@ -344,31 +344,31 @@ describe('RedBlackTree', () => {
344
344
  });
345
345
 
346
346
  it('should fix the tree after insertion', () => {
347
- tree.insert(1);
348
- tree.insert(2);
349
- tree.insert(5);
350
- tree.insert(15);
347
+ tree.add(1);
348
+ tree.add(2);
349
+ tree.add(5);
350
+ tree.add(15);
351
351
  const node15F = tree.getNode(15);
352
352
  expect(node15F.left).toBe(NIL);
353
353
  expect(node15F.right).toBe(NIL);
354
354
  expect(node15F.parent).toBe(tree.getNode(5));
355
355
 
356
- tree.insert(25);
357
- tree.insert(10);
358
- tree.insert(8);
359
- tree.insert(28);
360
- tree.insert(111);
361
- tree.insert(12);
356
+ tree.add(25);
357
+ tree.add(10);
358
+ tree.add(8);
359
+ tree.add(28);
360
+ tree.add(111);
361
+ tree.add(12);
362
362
  tree.delete(2);
363
- tree.insert(22);
364
- tree.insert(50);
365
- tree.insert(155);
366
- tree.insert(225);
363
+ tree.add(22);
364
+ tree.add(50);
365
+ tree.add(155);
366
+ tree.add(225);
367
367
  const node225F = tree.getNode(225);
368
368
  expect(node225F.left).toBe(NIL);
369
369
  expect(node225F.right).toBe(NIL);
370
370
  expect(node225F.parent.key).toBe(155);
371
- tree.insert(7);
371
+ tree.add(7);
372
372
 
373
373
  const node15S = tree.getNode(15);
374
374
  expect(node15S.left.key).toBe(8);
@@ -382,9 +382,9 @@ describe('RedBlackTree', () => {
382
382
  const node15T = tree.getNode(15);
383
383
  expect(node15T).toBe(null);
384
384
 
385
- tree.insert(23);
386
- tree.insert(33);
387
- tree.insert(15);
385
+ tree.add(23);
386
+ tree.add(33);
387
+ tree.add(15);
388
388
 
389
389
  const nodeLM = tree.getLeftMost();
390
390
  expect(nodeLM.key).toBe(1);
@@ -402,33 +402,33 @@ describe('RedBlackTree', () => {
402
402
  expect(node225S.right).toBe(NIL);
403
403
  expect(node225S.parent.key).toBe(155);
404
404
  expect(tree.getNode(0)).toBe(null);
405
- tree.insert(1);
406
- tree.insert(2);
407
- tree.insert(3);
408
- tree.insert(4);
409
- tree.insert(5);
410
- tree.insert(6);
411
- tree.insert(7);
412
- tree.insert(8);
413
- tree.insert(9);
414
- tree.insert(10);
415
- tree.insert(11);
416
- tree.insert(12);
417
- tree.insert(13);
418
- tree.insert(14);
419
- tree.insert(15);
420
- tree.insert(16);
421
- tree.insert(17);
422
- tree.insert(18);
423
- tree.insert(19);
424
- tree.insert(110);
405
+ tree.add(1);
406
+ tree.add(2);
407
+ tree.add(3);
408
+ tree.add(4);
409
+ tree.add(5);
410
+ tree.add(6);
411
+ tree.add(7);
412
+ tree.add(8);
413
+ tree.add(9);
414
+ tree.add(10);
415
+ tree.add(11);
416
+ tree.add(12);
417
+ tree.add(13);
418
+ tree.add(14);
419
+ tree.add(15);
420
+ tree.add(16);
421
+ tree.add(17);
422
+ tree.add(18);
423
+ tree.add(19);
424
+ tree.add(110);
425
425
 
426
426
  isDebug && tree.print();
427
427
  });
428
428
 
429
429
  it('should fix the tree after insertion and deletion', () => {
430
430
  for (let i = 0; i < 100; i++) {
431
- tree.insert(getRandomInt(-100, 1000));
431
+ tree.add(getRandomInt(-100, 1000));
432
432
  tree.delete(getRandomInt(-100, 1000));
433
433
  }
434
434
  });
@@ -1,6 +1,6 @@
1
1
  import {UndirectedEdge, UndirectedGraph, UndirectedVertex} from '../../../../src';
2
- import saltyVertexes from './SaltyGateStreetIntersections.json';
3
- import saltyEdges from './SaltyGateStreetConnections.json';
2
+ import saltyVertexes from './salty-vertexes.json';
3
+ import saltyEdges from './salty-edges.json';
4
4
 
5
5
  describe('UndirectedGraph Operation Test', () => {
6
6
  let graph: UndirectedGraph;
@@ -151,18 +151,17 @@ describe('UndirectedGraph', () => {
151
151
 
152
152
  it('xxx', () => {
153
153
  // const start = performance.now();
154
- const graph = new UndirectedGraph<{ name: string }, number >()
154
+ const graph = new UndirectedGraph<{name: string}, number>();
155
155
  for (const v of saltyVertexes) {
156
156
  graph.addVertex(v.name, v);
157
157
  }
158
158
  for (const e of saltyEdges) {
159
- const [s,d] = e;
160
- graph.addEdge( s.name, d.name, d.weight );
159
+ const [s, d] = e;
160
+ graph.addEdge(s.name, d.name, d.weight);
161
161
  }
162
162
  // const result = graph.getAllPathsBetween('Intersection_1','Intersection_5');
163
163
  // console.log('---xxx', performance.now() - start, result)
164
164
  // const result = graph.dijkstra('Intersection_1','Intersection_5', true, true);
165
165
  // console.log('---xxx', performance.now() - start, result)
166
-
167
- })
166
+ });
168
167
  });