data-structure-typed 1.47.6 → 1.47.7
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/.github/ISSUE_TEMPLATE/bug_report.md +10 -7
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/release-package.yml +1 -1
- package/CHANGELOG.md +1 -1
- package/CODE_OF_CONDUCT.md +32 -10
- package/COMMANDS.md +3 -1
- package/CONTRIBUTING.md +4 -3
- package/README.md +103 -28
- package/SECURITY.md +1 -1
- package/benchmark/report.html +46 -1
- package/benchmark/report.json +563 -8
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +40 -22
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +45 -36
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +105 -113
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +133 -119
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +53 -44
- package/dist/cjs/data-structures/binary-tree/bst.js +137 -154
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +48 -15
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +70 -33
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +26 -37
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js +58 -137
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +2 -6
- package/dist/cjs/data-structures/hash/hash-map.js +5 -8
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +3 -0
- package/dist/cjs/data-structures/trie/trie.js +19 -4
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/cjs/types/common.d.ts +6 -1
- package/dist/cjs/types/data-structures/hash/hash-map.d.ts +1 -2
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +40 -22
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +45 -36
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +105 -113
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +133 -128
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +53 -44
- package/dist/mjs/data-structures/binary-tree/bst.js +137 -154
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +48 -15
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +70 -33
- package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +26 -37
- package/dist/mjs/data-structures/binary-tree/tree-multimap.js +59 -138
- package/dist/mjs/data-structures/hash/hash-map.d.ts +2 -6
- package/dist/mjs/data-structures/hash/hash-map.js +5 -8
- package/dist/mjs/data-structures/trie/trie.d.ts +3 -0
- package/dist/mjs/data-structures/trie/trie.js +20 -4
- package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/mjs/types/common.d.ts +6 -1
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +1 -2
- package/dist/umd/data-structure-typed.js +422 -466
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +1 -1
- package/src/data-structures/binary-tree/avl-tree.ts +59 -39
- package/src/data-structures/binary-tree/binary-tree.ts +192 -180
- package/src/data-structures/binary-tree/bst.ts +157 -154
- package/src/data-structures/binary-tree/rb-tree.ts +78 -37
- package/src/data-structures/binary-tree/tree-multimap.ts +67 -145
- package/src/data-structures/hash/hash-map.ts +8 -8
- package/src/data-structures/trie/trie.ts +23 -4
- package/src/interfaces/binary-tree.ts +3 -3
- package/src/types/common.ts +11 -1
- package/src/types/data-structures/hash/hash-map.ts +1 -2
- package/test/integration/{all-in-one.ts → all-in-one.test.ts} +1 -1
- package/test/integration/index.html +87 -0
- package/test/performance/data-structures/comparison/comparison.test.ts +5 -5
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +19 -19
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +50 -51
- package/test/unit/data-structures/binary-tree/bst.test.ts +49 -54
- package/test/unit/data-structures/binary-tree/overall.test.ts +17 -18
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +3 -3
- package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +118 -66
- package/test/unit/unrestricted-interconversion.test.ts +61 -5
- package/tsconfig-cjs.json +1 -1
|
@@ -3,15 +3,52 @@ import { isDebugTest } from '../../../config';
|
|
|
3
3
|
|
|
4
4
|
const isDebug = isDebugTest;
|
|
5
5
|
|
|
6
|
-
describe('TreeMultimap
|
|
7
|
-
|
|
6
|
+
describe('TreeMultimap count', () => {
|
|
7
|
+
let tm: TreeMultimap<number>;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
tm = new TreeMultimap<number>();
|
|
10
|
+
|
|
11
|
+
})
|
|
12
|
+
it('Should added isolated node count ', () => {
|
|
13
|
+
tm.addMany([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]);
|
|
14
|
+
const newNode = new TreeMultimapNode(3, 33, 10);
|
|
15
|
+
tm.add(newNode);
|
|
16
|
+
expect(tm.count).toBe(15)
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
it('Should count', () => {
|
|
20
|
+
tm.addMany([[1, 1], [2, 2], [3, 3]]);
|
|
21
|
+
tm.lesserOrGreaterTraverse(node => node.count += 2, CP.gt, 1);
|
|
22
|
+
expect(tm.count).toBe(7)
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
describe('TreeMultimap operations test1', () => {
|
|
27
|
+
it('should perform various operations on a Binary Search Tree with numeric values1', () => {
|
|
8
28
|
const treeMultimap = new TreeMultimap();
|
|
9
29
|
|
|
10
30
|
expect(treeMultimap instanceof TreeMultimap);
|
|
11
|
-
treeMultimap.add(11, 11);
|
|
12
|
-
treeMultimap.add(3, 3);
|
|
13
|
-
const idAndValues
|
|
14
|
-
|
|
31
|
+
treeMultimap.add([11, 11]);
|
|
32
|
+
treeMultimap.add([3, 3]);
|
|
33
|
+
const idAndValues: [number, number][] = [
|
|
34
|
+
[11, 11],
|
|
35
|
+
[3, 3],
|
|
36
|
+
[15, 15],
|
|
37
|
+
[1, 1],
|
|
38
|
+
[8, 8],
|
|
39
|
+
[13, 13],
|
|
40
|
+
[16, 16],
|
|
41
|
+
[2, 2],
|
|
42
|
+
[6, 6],
|
|
43
|
+
[9, 9],
|
|
44
|
+
[12, 12],
|
|
45
|
+
[14, 14],
|
|
46
|
+
[4, 4],
|
|
47
|
+
[7, 7],
|
|
48
|
+
[10, 10],
|
|
49
|
+
[5, 5]
|
|
50
|
+
];
|
|
51
|
+
treeMultimap.addMany(idAndValues);
|
|
15
52
|
expect(treeMultimap.root instanceof TreeMultimapNode);
|
|
16
53
|
|
|
17
54
|
if (treeMultimap.root) expect(treeMultimap.root.key == 11);
|
|
@@ -21,8 +58,8 @@ describe('TreeMultimap operations test', () => {
|
|
|
21
58
|
|
|
22
59
|
expect(treeMultimap.has(6));
|
|
23
60
|
|
|
24
|
-
expect(treeMultimap.getHeight(6)).toBe(
|
|
25
|
-
expect(treeMultimap.getDepth(6)).toBe(
|
|
61
|
+
expect(treeMultimap.getHeight(6)).toBe(4);
|
|
62
|
+
expect(treeMultimap.getDepth(6)).toBe(0);
|
|
26
63
|
const nodeId10 = treeMultimap.getNode(10);
|
|
27
64
|
expect(nodeId10?.key).toBe(10);
|
|
28
65
|
|
|
@@ -39,14 +76,14 @@ describe('TreeMultimap operations test', () => {
|
|
|
39
76
|
|
|
40
77
|
const node15 = treeMultimap.getNode(15);
|
|
41
78
|
const minNodeBySpecificNode = node15 && treeMultimap.getLeftMost(node15);
|
|
42
|
-
expect(minNodeBySpecificNode?.key).toBe(
|
|
79
|
+
expect(minNodeBySpecificNode?.key).toBe(15);
|
|
43
80
|
|
|
44
81
|
let subTreeSum = 0;
|
|
45
82
|
node15 && treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (subTreeSum += node.key), 15);
|
|
46
|
-
expect(subTreeSum).toBe(
|
|
83
|
+
expect(subTreeSum).toBe(31);
|
|
47
84
|
let lesserSum = 0;
|
|
48
85
|
treeMultimap.lesserOrGreaterTraverse((node: TreeMultimapNode<number>) => (lesserSum += node.key), CP.lt, 10);
|
|
49
|
-
expect(lesserSum).toBe(
|
|
86
|
+
expect(lesserSum).toBe(21);
|
|
50
87
|
|
|
51
88
|
expect(node15 instanceof TreeMultimapNode);
|
|
52
89
|
if (node15 instanceof TreeMultimapNode) {
|
|
@@ -203,39 +240,38 @@ describe('TreeMultimap operations test', () => {
|
|
|
203
240
|
expect(bfsNodes[1].key).toBe(2);
|
|
204
241
|
expect(bfsNodes[2].key).toBe(16);
|
|
205
242
|
|
|
206
|
-
expect(treeMultimap.count).toBe(
|
|
243
|
+
expect(treeMultimap.count).toBe(4);
|
|
207
244
|
});
|
|
208
245
|
|
|
209
246
|
it('should perform various operations on a Binary Search Tree with object values', () => {
|
|
210
247
|
const objTreeMultimap = new TreeMultimap<{ key: number; keyA: number }>();
|
|
211
248
|
expect(objTreeMultimap).toBeInstanceOf(TreeMultimap);
|
|
212
|
-
objTreeMultimap.add(11, { key: 11, keyA: 11 });
|
|
213
|
-
objTreeMultimap.add(3, { key: 3, keyA: 3 });
|
|
214
|
-
const values = [
|
|
215
|
-
{ key: 15, keyA: 15 },
|
|
216
|
-
{ key: 1, keyA: 1 },
|
|
217
|
-
{ key: 8, keyA: 8 },
|
|
218
|
-
{ key: 13, keyA: 13 },
|
|
219
|
-
{ key: 16, keyA: 16 },
|
|
220
|
-
{ key: 2, keyA: 2 },
|
|
221
|
-
{ key: 6, keyA: 6 },
|
|
222
|
-
{ key: 9, keyA: 9 },
|
|
223
|
-
{ key: 12, keyA: 12 },
|
|
224
|
-
{ key: 14, keyA: 14 },
|
|
225
|
-
{ key: 4, keyA: 4 },
|
|
226
|
-
{ key: 7, keyA: 7 },
|
|
227
|
-
{ key: 10, keyA: 10 },
|
|
228
|
-
{ key: 5, keyA: 5 }
|
|
249
|
+
objTreeMultimap.add([11, { key: 11, keyA: 11 }]);
|
|
250
|
+
objTreeMultimap.add([3, { key: 3, keyA: 3 }]);
|
|
251
|
+
const values: [number, { key: number, keyA: number }][] = [
|
|
252
|
+
[15, { key: 15, keyA: 15 }],
|
|
253
|
+
[1, { key: 1, keyA: 1 }],
|
|
254
|
+
[8, { key: 8, keyA: 8 }],
|
|
255
|
+
[13, { key: 13, keyA: 13 }],
|
|
256
|
+
[16, { key: 16, keyA: 16 }],
|
|
257
|
+
[2, { key: 2, keyA: 2 }],
|
|
258
|
+
[6, { key: 6, keyA: 6 }],
|
|
259
|
+
[9, { key: 9, keyA: 9 }],
|
|
260
|
+
[12, { key: 12, keyA: 12 }],
|
|
261
|
+
[14, { key: 14, keyA: 14 }],
|
|
262
|
+
[4, { key: 4, keyA: 4 }],
|
|
263
|
+
[7, { key: 7, keyA: 7 }],
|
|
264
|
+
[10, { key: 10, keyA: 10 }],
|
|
265
|
+
[5, { key: 5, keyA: 5 }]
|
|
229
266
|
];
|
|
230
267
|
|
|
231
268
|
objTreeMultimap.addMany(
|
|
232
|
-
values.map(item => item.key),
|
|
233
269
|
values
|
|
234
270
|
);
|
|
235
271
|
|
|
236
272
|
expect(objTreeMultimap.root).toBeInstanceOf(TreeMultimapNode);
|
|
237
273
|
|
|
238
|
-
if (objTreeMultimap.root) expect(objTreeMultimap.root.key).toBe(
|
|
274
|
+
if (objTreeMultimap.root) expect(objTreeMultimap.root.key).toBe(6);
|
|
239
275
|
|
|
240
276
|
expect(objTreeMultimap.count).toBe(16);
|
|
241
277
|
|
|
@@ -243,26 +279,43 @@ describe('TreeMultimap operations test', () => {
|
|
|
243
279
|
});
|
|
244
280
|
});
|
|
245
281
|
|
|
246
|
-
describe('TreeMultimap operations test
|
|
247
|
-
it('should perform various operations on a Binary Search Tree with numeric
|
|
248
|
-
const treeMultimap = new TreeMultimap([], { iterationType: IterationType.RECURSIVE });
|
|
282
|
+
describe('TreeMultimap operations test recursively1', () => {
|
|
283
|
+
it('should perform various operations on a Binary Search Tree with numeric values1', () => {
|
|
284
|
+
const treeMultimap = new TreeMultimap<number>([], { iterationType: IterationType.RECURSIVE });
|
|
249
285
|
|
|
250
286
|
expect(treeMultimap instanceof TreeMultimap);
|
|
251
|
-
treeMultimap.add(11, 11);
|
|
252
|
-
treeMultimap.add(3, 3);
|
|
253
|
-
const idAndValues
|
|
254
|
-
|
|
255
|
-
|
|
287
|
+
treeMultimap.add([11, 11]);
|
|
288
|
+
treeMultimap.add([3, 3]);
|
|
289
|
+
const idAndValues: [number, number][] = [
|
|
290
|
+
[11, 11],
|
|
291
|
+
[3, 3],
|
|
292
|
+
[15, 15],
|
|
293
|
+
[1, 1],
|
|
294
|
+
[8, 8],
|
|
295
|
+
[13, 13],
|
|
296
|
+
[16, 16],
|
|
297
|
+
[2, 2],
|
|
298
|
+
[6, 6],
|
|
299
|
+
[9, 9],
|
|
300
|
+
[12, 12],
|
|
301
|
+
[14, 14],
|
|
302
|
+
[4, 4],
|
|
303
|
+
[7, 7],
|
|
304
|
+
[10, 10],
|
|
305
|
+
[5, 5]
|
|
306
|
+
];
|
|
307
|
+
treeMultimap.addMany(idAndValues);
|
|
308
|
+
expect(treeMultimap.root).toBeInstanceOf(TreeMultimapNode);
|
|
256
309
|
|
|
257
|
-
if (treeMultimap.root) expect(treeMultimap.root.key
|
|
310
|
+
if (treeMultimap.root) expect(treeMultimap.root.key).toBe(6);
|
|
258
311
|
|
|
259
312
|
expect(treeMultimap.size).toBe(16);
|
|
260
313
|
expect(treeMultimap.count).toBe(18);
|
|
261
314
|
|
|
262
315
|
expect(treeMultimap.has(6));
|
|
263
316
|
|
|
264
|
-
expect(treeMultimap.getHeight(6)).toBe(
|
|
265
|
-
expect(treeMultimap.getDepth(6)).toBe(
|
|
317
|
+
expect(treeMultimap.getHeight(6)).toBe(4);
|
|
318
|
+
expect(treeMultimap.getDepth(6)).toBe(0);
|
|
266
319
|
const nodeId10 = treeMultimap.getNode(10);
|
|
267
320
|
expect(nodeId10?.key).toBe(10);
|
|
268
321
|
|
|
@@ -279,14 +332,14 @@ describe('TreeMultimap operations test recursively', () => {
|
|
|
279
332
|
|
|
280
333
|
const node15 = treeMultimap.getNode(15);
|
|
281
334
|
const minNodeBySpecificNode = node15 && treeMultimap.getLeftMost(node15);
|
|
282
|
-
expect(minNodeBySpecificNode?.key).toBe(
|
|
335
|
+
expect(minNodeBySpecificNode?.key).toBe(15);
|
|
283
336
|
|
|
284
337
|
let subTreeSum = 0;
|
|
285
338
|
node15 && treeMultimap.subTreeTraverse((node: TreeMultimapNode<number>) => (subTreeSum += node.key), 15);
|
|
286
|
-
expect(subTreeSum).toBe(
|
|
339
|
+
expect(subTreeSum).toBe(31);
|
|
287
340
|
let lesserSum = 0;
|
|
288
341
|
treeMultimap.lesserOrGreaterTraverse((node: TreeMultimapNode<number>) => (lesserSum += node.key), CP.lt, 10);
|
|
289
|
-
expect(lesserSum).toBe(
|
|
342
|
+
expect(lesserSum).toBe(21);
|
|
290
343
|
|
|
291
344
|
expect(node15 instanceof TreeMultimapNode);
|
|
292
345
|
if (node15 instanceof TreeMultimapNode) {
|
|
@@ -303,7 +356,7 @@ describe('TreeMultimap operations test recursively', () => {
|
|
|
303
356
|
const dfsInorderNodes = treeMultimap.dfs(node => node, 'in');
|
|
304
357
|
expect(dfsInorderNodes[0].key).toBe(1);
|
|
305
358
|
expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
|
|
306
|
-
expect(treeMultimap.isPerfectlyBalanced()).toBe(
|
|
359
|
+
expect(treeMultimap.isPerfectlyBalanced()).toBe(true);
|
|
307
360
|
|
|
308
361
|
treeMultimap.perfectlyBalance();
|
|
309
362
|
|
|
@@ -443,39 +496,38 @@ describe('TreeMultimap operations test recursively', () => {
|
|
|
443
496
|
expect(bfsNodes[1].key).toBe(2);
|
|
444
497
|
expect(bfsNodes[2].key).toBe(16);
|
|
445
498
|
|
|
446
|
-
expect(treeMultimap.count).toBe(
|
|
499
|
+
expect(treeMultimap.count).toBe(4);
|
|
447
500
|
});
|
|
448
501
|
|
|
449
502
|
it('should perform various operations on a Binary Search Tree with object values', () => {
|
|
450
503
|
const objTreeMultimap = new TreeMultimap<{ key: number; keyA: number }>();
|
|
451
504
|
expect(objTreeMultimap).toBeInstanceOf(TreeMultimap);
|
|
452
|
-
objTreeMultimap.add(11, { key: 11, keyA: 11 });
|
|
453
|
-
objTreeMultimap.add(3, { key: 3, keyA: 3 });
|
|
454
|
-
const values = [
|
|
455
|
-
{ key: 15, keyA: 15 },
|
|
456
|
-
{ key: 1, keyA: 1 },
|
|
457
|
-
{ key: 8, keyA: 8 },
|
|
458
|
-
{ key: 13, keyA: 13 },
|
|
459
|
-
{ key: 16, keyA: 16 },
|
|
460
|
-
{ key: 2, keyA: 2 },
|
|
461
|
-
{ key: 6, keyA: 6 },
|
|
462
|
-
{ key: 9, keyA: 9 },
|
|
463
|
-
{ key: 12, keyA: 12 },
|
|
464
|
-
{ key: 14, keyA: 14 },
|
|
465
|
-
{ key: 4, keyA: 4 },
|
|
466
|
-
{ key: 7, keyA: 7 },
|
|
467
|
-
{ key: 10, keyA: 10 },
|
|
468
|
-
{ key: 5, keyA: 5 }
|
|
505
|
+
objTreeMultimap.add([11, { key: 11, keyA: 11 }]);
|
|
506
|
+
objTreeMultimap.add([3, { key: 3, keyA: 3 }]);
|
|
507
|
+
const values: [number, { key: number; keyA: number }][] = [
|
|
508
|
+
[15, { key: 15, keyA: 15 }],
|
|
509
|
+
[1, { key: 1, keyA: 1 }],
|
|
510
|
+
[8, { key: 8, keyA: 8 }],
|
|
511
|
+
[13, { key: 13, keyA: 13 }],
|
|
512
|
+
[16, { key: 16, keyA: 16 }],
|
|
513
|
+
[2, { key: 2, keyA: 2 }],
|
|
514
|
+
[6, { key: 6, keyA: 6 }],
|
|
515
|
+
[9, { key: 9, keyA: 9 }],
|
|
516
|
+
[12, { key: 12, keyA: 12 }],
|
|
517
|
+
[14, { key: 14, keyA: 14 }],
|
|
518
|
+
[4, { key: 4, keyA: 4 }],
|
|
519
|
+
[7, { key: 7, keyA: 7 }],
|
|
520
|
+
[10, { key: 10, keyA: 10 }],
|
|
521
|
+
[5, { key: 5, keyA: 5 }]
|
|
469
522
|
];
|
|
470
523
|
|
|
471
524
|
objTreeMultimap.addMany(
|
|
472
|
-
values.map(item => item.key),
|
|
473
525
|
values
|
|
474
526
|
);
|
|
475
527
|
|
|
476
528
|
expect(objTreeMultimap.root).toBeInstanceOf(TreeMultimapNode);
|
|
477
529
|
|
|
478
|
-
if (objTreeMultimap.root) expect(objTreeMultimap.root.key).toBe(
|
|
530
|
+
if (objTreeMultimap.root) expect(objTreeMultimap.root.key).toBe(6);
|
|
479
531
|
|
|
480
532
|
expect(objTreeMultimap.count).toBe(16);
|
|
481
533
|
|
|
@@ -4,6 +4,8 @@ import {
|
|
|
4
4
|
BST,
|
|
5
5
|
Deque,
|
|
6
6
|
DoublyLinkedList,
|
|
7
|
+
HashMap,
|
|
8
|
+
Heap,
|
|
7
9
|
MaxHeap,
|
|
8
10
|
MaxPriorityQueue,
|
|
9
11
|
MinHeap,
|
|
@@ -12,12 +14,25 @@ import {
|
|
|
12
14
|
RedBlackTree,
|
|
13
15
|
SinglyLinkedList,
|
|
14
16
|
Stack,
|
|
15
|
-
TreeMultimap
|
|
17
|
+
TreeMultimap,
|
|
18
|
+
Trie
|
|
16
19
|
} from '../../src';
|
|
17
20
|
import { isDebugTest } from "../config";
|
|
18
21
|
|
|
19
22
|
const isDebug = isDebugTest;
|
|
20
23
|
const orgArr: number[] = [6, 1, 2, 7, 5, 3, 4, 9, 8];
|
|
24
|
+
const orgStrArr: string[] = [
|
|
25
|
+
"trie",
|
|
26
|
+
"trial",
|
|
27
|
+
"trick",
|
|
28
|
+
"trip",
|
|
29
|
+
"tree",
|
|
30
|
+
"trend",
|
|
31
|
+
"triangle",
|
|
32
|
+
"track",
|
|
33
|
+
"trace",
|
|
34
|
+
"transmit"
|
|
35
|
+
];
|
|
21
36
|
const entries: [number, number][] = [[6, 6], [1, 1], [2, 2], [7, 7], [5, 5], [3, 3], [4, 4], [9, 9], [8, 8]];
|
|
22
37
|
|
|
23
38
|
describe('conversions', () => {
|
|
@@ -72,28 +87,69 @@ describe('conversions', () => {
|
|
|
72
87
|
})
|
|
73
88
|
|
|
74
89
|
it('Entry Array to BST', () => {
|
|
75
|
-
const bst = new BST<number>(
|
|
90
|
+
const bst = new BST<number>(entries);
|
|
76
91
|
expect(bst.size).toBe(9)
|
|
77
92
|
isDebug && bst.print();
|
|
78
93
|
})
|
|
79
94
|
|
|
80
95
|
it('Entry Array to RedBlackTree', () => {
|
|
81
|
-
const rbTree = new RedBlackTree<number>(
|
|
96
|
+
const rbTree = new RedBlackTree<number>(entries);
|
|
82
97
|
expect(rbTree.size).toBe(9)
|
|
83
98
|
isDebug && rbTree.print();
|
|
84
99
|
})
|
|
85
100
|
|
|
86
101
|
it('Entry Array to AVLTree', () => {
|
|
87
|
-
const avl = new AVLTree<number>(
|
|
102
|
+
const avl = new AVLTree<number>(entries);
|
|
88
103
|
expect(avl.size).toBe(9)
|
|
89
104
|
isDebug && avl.print();
|
|
90
105
|
})
|
|
91
106
|
|
|
92
107
|
it('Entry Array to TreeMultimap', () => {
|
|
93
|
-
const treeMulti = new TreeMultimap<number>(
|
|
108
|
+
const treeMulti = new TreeMultimap<number>(entries);
|
|
94
109
|
expect(treeMulti.size).toBe(9)
|
|
95
110
|
isDebug && treeMulti.print();
|
|
96
111
|
})
|
|
112
|
+
|
|
113
|
+
it('HashMap to RedBlackTree', () => {
|
|
114
|
+
const hm = new HashMap(entries);
|
|
115
|
+
isDebug && hm.print()
|
|
116
|
+
const rbTree = new RedBlackTree<number>(hm);
|
|
117
|
+
expect(rbTree.size).toBe(9)
|
|
118
|
+
isDebug && rbTree.print();
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
it('PriorityQueue to BST', () => {
|
|
122
|
+
const pq = new MinPriorityQueue(orgArr);
|
|
123
|
+
isDebug && pq.print();
|
|
124
|
+
const bst = new BST<number>(pq);
|
|
125
|
+
expect(bst.size).toBe(9)
|
|
126
|
+
isDebug && bst.print();
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('Deque to RedBlackTree', () => {
|
|
130
|
+
const dq = new Deque(orgArr);
|
|
131
|
+
isDebug && dq.print();
|
|
132
|
+
const rbTree = new RedBlackTree<number>(dq);
|
|
133
|
+
expect(rbTree.size).toBe(9)
|
|
134
|
+
isDebug && rbTree.print();
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
it('Trie to Heap to Deque', () => {
|
|
138
|
+
const trie = new Trie(orgStrArr);
|
|
139
|
+
expect(trie.size).toBe(10);
|
|
140
|
+
isDebug && trie.print();
|
|
141
|
+
const heap = new Heap<string>(trie, { comparator: (a, b) => Number(a) - Number(b) });
|
|
142
|
+
expect(heap.size).toBe(10);
|
|
143
|
+
isDebug && heap.print();
|
|
144
|
+
const dq = new Deque<string>(heap);
|
|
145
|
+
expect(dq.size).toBe(10);
|
|
146
|
+
isDebug && dq.print();
|
|
147
|
+
const entries = dq.map((el, i) => <[number, string]>[i, el]);
|
|
148
|
+
const avl = new AVLTree<string>(entries);
|
|
149
|
+
expect(avl.size).toBe(10)
|
|
150
|
+
isDebug && avl.print();
|
|
151
|
+
})
|
|
152
|
+
|
|
97
153
|
})
|
|
98
154
|
|
|
99
155
|
|