data-structure-typed 1.47.6 → 1.47.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.
- 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 +188 -32
- 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/segment-tree.d.ts +6 -6
- package/dist/cjs/data-structures/binary-tree/segment-tree.js +7 -7
- package/dist/cjs/data-structures/binary-tree/segment-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/graph/abstract-graph.d.ts +17 -17
- package/dist/cjs/data-structures/graph/abstract-graph.js +30 -30
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.d.ts +24 -24
- package/dist/cjs/data-structures/graph/directed-graph.js +28 -28
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.d.ts +14 -14
- package/dist/cjs/data-structures/graph/undirected-graph.js +18 -18
- package/dist/cjs/data-structures/graph/undirected-graph.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/linked-list/doubly-linked-list.d.ts +28 -28
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +33 -33
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +21 -21
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +27 -27
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js +4 -4
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +13 -13
- package/dist/cjs/data-structures/queue/queue.js +13 -13
- package/dist/cjs/data-structures/stack/stack.d.ts +6 -6
- package/dist/cjs/data-structures/stack/stack.js +7 -7
- package/dist/cjs/data-structures/stack/stack.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/graph/abstract-graph.d.ts +2 -2
- 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/segment-tree.d.ts +6 -6
- package/dist/mjs/data-structures/binary-tree/segment-tree.js +7 -7
- 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/graph/abstract-graph.d.ts +17 -17
- package/dist/mjs/data-structures/graph/abstract-graph.js +30 -30
- package/dist/mjs/data-structures/graph/directed-graph.d.ts +24 -24
- package/dist/mjs/data-structures/graph/directed-graph.js +28 -28
- package/dist/mjs/data-structures/graph/undirected-graph.d.ts +14 -14
- package/dist/mjs/data-structures/graph/undirected-graph.js +18 -18
- 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/linked-list/doubly-linked-list.d.ts +28 -28
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +33 -33
- package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +21 -21
- package/dist/mjs/data-structures/linked-list/singly-linked-list.js +27 -27
- package/dist/mjs/data-structures/linked-list/skip-linked-list.js +4 -4
- package/dist/mjs/data-structures/queue/queue.d.ts +13 -13
- package/dist/mjs/data-structures/queue/queue.js +13 -13
- package/dist/mjs/data-structures/stack/stack.d.ts +6 -6
- package/dist/mjs/data-structures/stack/stack.js +7 -7
- 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/graph/abstract-graph.d.ts +2 -2
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +1 -2
- package/dist/umd/data-structure-typed.js +583 -627
- 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/segment-tree.ts +10 -10
- package/src/data-structures/binary-tree/tree-multimap.ts +67 -145
- package/src/data-structures/graph/abstract-graph.ts +46 -46
- package/src/data-structures/graph/directed-graph.ts +40 -40
- package/src/data-structures/graph/undirected-graph.ts +26 -26
- package/src/data-structures/hash/hash-map.ts +8 -8
- package/src/data-structures/linked-list/doubly-linked-list.ts +45 -45
- package/src/data-structures/linked-list/singly-linked-list.ts +38 -38
- package/src/data-structures/linked-list/skip-linked-list.ts +4 -4
- package/src/data-structures/queue/queue.ts +13 -13
- package/src/data-structures/stack/stack.ts +9 -9
- 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/graph/abstract-graph.ts +2 -2
- 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 +158 -2
- package/test/performance/data-structures/comparison/comparison.test.ts +5 -5
- package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +1 -1
- package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +1 -1
- 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/segment-tree.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +118 -66
- package/test/unit/data-structures/graph/abstract-graph.test.ts +4 -4
- package/test/unit/data-structures/graph/directed-graph.test.ts +10 -10
- package/test/unit/data-structures/graph/undirected-graph.test.ts +3 -3
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +14 -14
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +3 -3
- package/test/unit/data-structures/linked-list/skip-list.test.ts +1 -1
- package/test/unit/data-structures/queue/deque.test.ts +1 -1
- package/test/unit/data-structures/stack/stack.test.ts +2 -2
- package/test/unit/unrestricted-interconversion.test.ts +61 -5
- package/tsconfig-cjs.json +1 -1
|
@@ -7,10 +7,10 @@ describe('BST operations test', () => {
|
|
|
7
7
|
it('should perform various operations on a Binary Search Tree with numeric values', () => {
|
|
8
8
|
const bst = new BST();
|
|
9
9
|
expect(bst).toBeInstanceOf(BST);
|
|
10
|
-
bst.add(11, 11);
|
|
11
|
-
bst.add(3, 3);
|
|
12
|
-
const idsAndValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
|
|
13
|
-
bst.addMany(idsAndValues,
|
|
10
|
+
bst.add([11, 11]);
|
|
11
|
+
bst.add([3, 3]);
|
|
12
|
+
const idsAndValues: [number, number][] = [[15, 15], [1, 1], [8, 8], [13, 13], [16, 16], [2, 2], [6, 6], [9, 9], [12, 12], [14, 14], [4, 4], [7, 7], [10, 10], [5, 5]];
|
|
13
|
+
bst.addMany(idsAndValues, false);
|
|
14
14
|
expect(bst.root).toBeInstanceOf(BSTNode);
|
|
15
15
|
|
|
16
16
|
if (bst.root) expect(bst.root.key).toBe(11);
|
|
@@ -191,30 +191,26 @@ describe('BST operations test', () => {
|
|
|
191
191
|
it('should perform various operations on a Binary Search Tree with object values', () => {
|
|
192
192
|
const objBST = new BST<{ key: number; keyA: number }>();
|
|
193
193
|
expect(objBST).toBeInstanceOf(BST);
|
|
194
|
-
objBST.add(11, { key: 11, keyA: 11 });
|
|
195
|
-
objBST.add(3, { key: 3, keyA: 3 });
|
|
196
|
-
const values = [
|
|
197
|
-
{ key: 15, keyA: 15 },
|
|
198
|
-
{ key: 1, keyA: 1 },
|
|
199
|
-
{ key: 8, keyA: 8 },
|
|
200
|
-
{ key: 13, keyA: 13 },
|
|
201
|
-
{ key: 16, keyA: 16 },
|
|
202
|
-
{ key: 2, keyA: 2 },
|
|
203
|
-
{ key: 6, keyA: 6 },
|
|
204
|
-
{ key: 9, keyA: 9 },
|
|
205
|
-
{ key: 12, keyA: 12 },
|
|
206
|
-
{ key: 14, keyA: 14 },
|
|
207
|
-
{ key: 4, keyA: 4 },
|
|
208
|
-
{ key: 7, keyA: 7 },
|
|
209
|
-
{ key: 10, keyA: 10 },
|
|
210
|
-
{ key: 5, keyA: 5 }
|
|
194
|
+
objBST.add([11, { key: 11, keyA: 11 }]);
|
|
195
|
+
objBST.add([3, { key: 3, keyA: 3 }]);
|
|
196
|
+
const values: [number, { key: number; keyA: number }][] = [
|
|
197
|
+
[15, { key: 15, keyA: 15 }],
|
|
198
|
+
[1, { key: 1, keyA: 1 }],
|
|
199
|
+
[8, { key: 8, keyA: 8 }],
|
|
200
|
+
[13, { key: 13, keyA: 13 }],
|
|
201
|
+
[16, { key: 16, keyA: 16 }],
|
|
202
|
+
[2, { key: 2, keyA: 2 }],
|
|
203
|
+
[6, { key: 6, keyA: 6 }],
|
|
204
|
+
[9, { key: 9, keyA: 9 }],
|
|
205
|
+
[12, { key: 12, keyA: 12 }],
|
|
206
|
+
[14, { key: 14, keyA: 14 }],
|
|
207
|
+
[4, { key: 4, keyA: 4 }],
|
|
208
|
+
[7, { key: 7, keyA: 7 }],
|
|
209
|
+
[10, { key: 10, keyA: 10 }],
|
|
210
|
+
[5, { key: 5, keyA: 5 }]
|
|
211
211
|
];
|
|
212
212
|
|
|
213
|
-
objBST.addMany(
|
|
214
|
-
values.map(item => item.key),
|
|
215
|
-
values,
|
|
216
|
-
false
|
|
217
|
-
);
|
|
213
|
+
objBST.addMany(values, false);
|
|
218
214
|
|
|
219
215
|
expect(objBST.root).toBeInstanceOf(BSTNode);
|
|
220
216
|
|
|
@@ -395,12 +391,12 @@ describe('BST operations test', () => {
|
|
|
395
391
|
|
|
396
392
|
describe('BST operations test recursively', () => {
|
|
397
393
|
it('should perform various operations on a Binary Search Tree with numeric values', () => {
|
|
398
|
-
const bst = new BST([], { iterationType: IterationType.RECURSIVE });
|
|
394
|
+
const bst = new BST<number>([], { iterationType: IterationType.RECURSIVE });
|
|
399
395
|
expect(bst).toBeInstanceOf(BST);
|
|
400
|
-
bst.add(11, 11);
|
|
401
|
-
bst.add(3, 3);
|
|
396
|
+
bst.add([11, 11]);
|
|
397
|
+
bst.add([3, 3]);
|
|
402
398
|
const idsAndValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
|
|
403
|
-
bst.addMany(idsAndValues,
|
|
399
|
+
bst.addMany(idsAndValues, false);
|
|
404
400
|
expect(bst.root).toBeInstanceOf(BSTNode);
|
|
405
401
|
|
|
406
402
|
if (bst.root) expect(bst.root.key).toBe(11);
|
|
@@ -414,11 +410,11 @@ describe('BST operations test recursively', () => {
|
|
|
414
410
|
expect(node6 && bst.getDepth(6)).toBe(3);
|
|
415
411
|
|
|
416
412
|
const nodeId10 = bst.getNode(10);
|
|
417
|
-
expect(bst.get(10)).toBe(
|
|
413
|
+
expect(bst.get(10)).toBe(undefined);
|
|
418
414
|
expect(nodeId10?.key).toBe(10);
|
|
419
415
|
|
|
420
416
|
const nodeVal9 = bst.getNode(9, node => node.value);
|
|
421
|
-
expect(nodeVal9?.key).toBe(
|
|
417
|
+
expect(nodeVal9?.key).toBe(undefined);
|
|
422
418
|
|
|
423
419
|
const leftMost = bst.getLeftMost();
|
|
424
420
|
expect(leftMost?.key).toBe(1);
|
|
@@ -582,27 +578,26 @@ describe('BST operations test recursively', () => {
|
|
|
582
578
|
it('should perform various operations on a Binary Search Tree with object values', () => {
|
|
583
579
|
const objBST = new BST<{ key: number; keyA: number }>();
|
|
584
580
|
expect(objBST).toBeInstanceOf(BST);
|
|
585
|
-
objBST.add(11, { key: 11, keyA: 11 });
|
|
586
|
-
objBST.add(3, { key: 3, keyA: 3 });
|
|
587
|
-
const values = [
|
|
588
|
-
{ key: 15, keyA: 15 },
|
|
589
|
-
{ key: 1, keyA: 1 },
|
|
590
|
-
{ key: 8, keyA: 8 },
|
|
591
|
-
{ key: 13, keyA: 13 },
|
|
592
|
-
{ key: 16, keyA: 16 },
|
|
593
|
-
{ key: 2, keyA: 2 },
|
|
594
|
-
{ key: 6, keyA: 6 },
|
|
595
|
-
{ key: 9, keyA: 9 },
|
|
596
|
-
{ key: 12, keyA: 12 },
|
|
597
|
-
{ key: 14, keyA: 14 },
|
|
598
|
-
{ key: 4, keyA: 4 },
|
|
599
|
-
{ key: 7, keyA: 7 },
|
|
600
|
-
{ key: 10, keyA: 10 },
|
|
601
|
-
{ key: 5, keyA: 5 }
|
|
581
|
+
objBST.add([11, { key: 11, keyA: 11 }]);
|
|
582
|
+
objBST.add([3, { key: 3, keyA: 3 }]);
|
|
583
|
+
const values: [number, { key: number; keyA: number }][] = [
|
|
584
|
+
[15, { key: 15, keyA: 15 }],
|
|
585
|
+
[1, { key: 1, keyA: 1 }],
|
|
586
|
+
[8, { key: 8, keyA: 8 }],
|
|
587
|
+
[13, { key: 13, keyA: 13 }],
|
|
588
|
+
[16, { key: 16, keyA: 16 }],
|
|
589
|
+
[2, { key: 2, keyA: 2 }],
|
|
590
|
+
[6, { key: 6, keyA: 6 }],
|
|
591
|
+
[9, { key: 9, keyA: 9 }],
|
|
592
|
+
[12, { key: 12, keyA: 12 }],
|
|
593
|
+
[14, { key: 14, keyA: 14 }],
|
|
594
|
+
[4, { key: 4, keyA: 4 }],
|
|
595
|
+
[7, { key: 7, keyA: 7 }],
|
|
596
|
+
[10, { key: 10, keyA: 10 }],
|
|
597
|
+
[5, { key: 5, keyA: 5 }]
|
|
602
598
|
];
|
|
603
599
|
|
|
604
600
|
objBST.addMany(
|
|
605
|
-
values.map(item => item.key),
|
|
606
601
|
values,
|
|
607
602
|
false
|
|
608
603
|
);
|
|
@@ -834,7 +829,7 @@ describe('BST Performance test', function () {
|
|
|
834
829
|
|
|
835
830
|
it('should the lastKey of a BST to be the largest key', function () {
|
|
836
831
|
const bst = new BST();
|
|
837
|
-
bst.addMany([9, 8, 7, 3, 1, 2, 5, 4, 6],
|
|
832
|
+
bst.addMany([9, 8, 7, 3, 1, 2, 5, 4, 6], false);
|
|
838
833
|
expect(bst.lastKey()).toBe(9);
|
|
839
834
|
});
|
|
840
835
|
|
|
@@ -856,9 +851,9 @@ describe('BST iterative methods test', () => {
|
|
|
856
851
|
let bst: BST<string>;
|
|
857
852
|
beforeEach(() => {
|
|
858
853
|
bst = new BST();
|
|
859
|
-
bst.add(1, 'a');
|
|
860
|
-
bst.add(2, 'b');
|
|
861
|
-
bst.add(3, 'c');
|
|
854
|
+
bst.add([1, 'a']);
|
|
855
|
+
bst.add([2, 'b']);
|
|
856
|
+
bst.add([3, 'c']);
|
|
862
857
|
});
|
|
863
858
|
|
|
864
859
|
test('The node obtained by get Node should match the node type', () => {
|
|
@@ -5,7 +5,7 @@ describe('Overall BinaryTree Test', () => {
|
|
|
5
5
|
const bst = new BST();
|
|
6
6
|
bst.add(11);
|
|
7
7
|
bst.add(3);
|
|
8
|
-
bst.addMany([15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5],
|
|
8
|
+
bst.addMany([15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5], false);
|
|
9
9
|
bst.size === 16; // true
|
|
10
10
|
expect(bst.size).toBe(16); // true
|
|
11
11
|
bst.has(6); // true
|
|
@@ -30,26 +30,25 @@ describe('Overall BinaryTree Test', () => {
|
|
|
30
30
|
expect(bfsIDs[0]).toBe(11);
|
|
31
31
|
|
|
32
32
|
const objBST = new BST<{ key: number; keyA: number }>();
|
|
33
|
-
objBST.add(11, { key: 11, keyA: 11 });
|
|
34
|
-
objBST.add(3, { key: 3, keyA: 3 });
|
|
33
|
+
objBST.add([11, { key: 11, keyA: 11 }]);
|
|
34
|
+
objBST.add([3, { key: 3, keyA: 3 }]);
|
|
35
35
|
|
|
36
36
|
objBST.addMany(
|
|
37
|
-
[15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5],
|
|
38
37
|
[
|
|
39
|
-
{ key: 15, keyA: 15 },
|
|
40
|
-
{ key: 1, keyA: 1 },
|
|
41
|
-
{ key: 8, keyA: 8 },
|
|
42
|
-
{ key: 13, keyA: 13 },
|
|
43
|
-
{ key: 16, keyA: 16 },
|
|
44
|
-
{ key: 2, keyA: 2 },
|
|
45
|
-
{ key: 6, keyA: 6 },
|
|
46
|
-
{ key: 9, keyA: 9 },
|
|
47
|
-
{ key: 12, keyA: 12 },
|
|
48
|
-
{ key: 14, keyA: 14 },
|
|
49
|
-
{ key: 4, keyA: 4 },
|
|
50
|
-
{ key: 7, keyA: 7 },
|
|
51
|
-
{ key: 10, keyA: 10 },
|
|
52
|
-
{ key: 5, keyA: 5 }
|
|
38
|
+
[15, { key: 15, keyA: 15 }],
|
|
39
|
+
[1, { key: 1, keyA: 1 }],
|
|
40
|
+
[8, { key: 8, keyA: 8 }],
|
|
41
|
+
[13, { key: 13, keyA: 13 }],
|
|
42
|
+
[16, { key: 16, keyA: 16 }],
|
|
43
|
+
[2, { key: 2, keyA: 2 }],
|
|
44
|
+
[6, { key: 6, keyA: 6 }],
|
|
45
|
+
[9, { key: 9, keyA: 9 }],
|
|
46
|
+
[12, { key: 12, keyA: 12 }],
|
|
47
|
+
[14, { key: 14, keyA: 14 }],
|
|
48
|
+
[4, { key: 4, keyA: 4 }],
|
|
49
|
+
[7, { key: 7, keyA: 7 }],
|
|
50
|
+
[10, { key: 10, keyA: 10 }],
|
|
51
|
+
[5, { key: 5, keyA: 5 }]
|
|
53
52
|
]
|
|
54
53
|
);
|
|
55
54
|
|
|
@@ -510,9 +510,9 @@ describe('RedBlackTree iterative methods test', () => {
|
|
|
510
510
|
let rbTree: RedBlackTree<string>;
|
|
511
511
|
beforeEach(() => {
|
|
512
512
|
rbTree = new RedBlackTree();
|
|
513
|
-
rbTree.add(1, 'a');
|
|
514
|
-
rbTree.add(2, 'b');
|
|
515
|
-
rbTree.add(3, 'c');
|
|
513
|
+
rbTree.add([1, 'a']);
|
|
514
|
+
rbTree.add([2, 'b']);
|
|
515
|
+
rbTree.add([3, 'c']);
|
|
516
516
|
});
|
|
517
517
|
|
|
518
518
|
test('The node obtained by get Node should match the node type', () => {
|
|
@@ -37,7 +37,7 @@ describe('SegmentTree', () => {
|
|
|
37
37
|
it('should handle an empty input array', () => {
|
|
38
38
|
// Check behavior when dealing with an empty input array
|
|
39
39
|
const emptySegmentTree = new SegmentTree([]);
|
|
40
|
-
expect(emptySegmentTree.root).toBe(
|
|
40
|
+
expect(emptySegmentTree.root).toBe(undefined);
|
|
41
41
|
expect(emptySegmentTree.querySumByRange(0, 2)).toBe(0); // Sum of an empty array should be 0
|
|
42
42
|
});
|
|
43
43
|
|
|
@@ -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
|
|
|
@@ -36,11 +36,11 @@ class MyGraph<
|
|
|
36
36
|
return new MyEdge(srcOrV1, destOrV2, weight, value) as EO;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
deleteEdge(edge: EO): EO |
|
|
39
|
+
deleteEdge(edge: EO): EO | undefined {
|
|
40
40
|
return edge;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
getEdge(srcOrKey: VertexKey, destOrKey: VertexKey): EO |
|
|
43
|
+
getEdge(srcOrKey: VertexKey, destOrKey: VertexKey): EO | undefined {
|
|
44
44
|
return new MyEdge(srcOrKey, destOrKey) as EO;
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -62,8 +62,8 @@ class MyGraph<
|
|
|
62
62
|
return [new MyVertex(a, 'b') as VO];
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
getEndsOfEdge(edge: EO): [VO, VO] |
|
|
66
|
-
return edge ?
|
|
65
|
+
getEndsOfEdge(edge: EO): [VO, VO] | undefined {
|
|
66
|
+
return edge ? undefined : undefined;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
protected _addEdgeOnly(edge: EO): boolean {
|
|
@@ -196,7 +196,7 @@ describe('Inherit from DirectedGraph and perform operations', () => {
|
|
|
196
196
|
expect(edge1).toBeInstanceOf(MyEdge);
|
|
197
197
|
expect(edge1.src).toBe(1);
|
|
198
198
|
expect(edge1).toEqual(edge2);
|
|
199
|
-
expect(edge3).
|
|
199
|
+
expect(edge3).toBe(undefined);
|
|
200
200
|
}
|
|
201
201
|
});
|
|
202
202
|
|
|
@@ -217,7 +217,7 @@ describe('Inherit from DirectedGraph and perform operations', () => {
|
|
|
217
217
|
removedEdge && expect(removedEdge.value).toBe('edge-data1-2');
|
|
218
218
|
removedEdge && expect(removedEdge.src).toBe(1);
|
|
219
219
|
}
|
|
220
|
-
expect(edgeAfterRemoval).
|
|
220
|
+
expect(edgeAfterRemoval).toBe(undefined);
|
|
221
221
|
});
|
|
222
222
|
|
|
223
223
|
it('Topological sort', () => {
|
|
@@ -303,7 +303,7 @@ describe('Inherit from DirectedGraph and perform operations test2.', () => {
|
|
|
303
303
|
|
|
304
304
|
myGraph.addEdge(new MyEdge(7, 3, 73, 'edge-data7-3'));
|
|
305
305
|
const topologicalSorted = myGraph.topologicalSort();
|
|
306
|
-
expect(topologicalSorted).
|
|
306
|
+
expect(topologicalSorted).toBe(undefined);
|
|
307
307
|
|
|
308
308
|
const minPath1to7 = myGraph.getMinPathBetween(1, 7);
|
|
309
309
|
|
|
@@ -378,11 +378,11 @@ describe('Inherit from DirectedGraph and perform operations test2.', () => {
|
|
|
378
378
|
|
|
379
379
|
expect(predecessor).toBeInstanceOf(Array);
|
|
380
380
|
expect(predecessor.length).toBe(9);
|
|
381
|
-
expect(predecessor[0]).toEqual([vertex2,
|
|
382
|
-
expect(predecessor[1]).toEqual([
|
|
383
|
-
expect(predecessor[5]).toEqual([
|
|
384
|
-
expect(predecessor[7]).toEqual([
|
|
385
|
-
expect(predecessor[8]).toEqual([vertex7, vertex7, vertex7, vertex7, vertex7,
|
|
381
|
+
expect(predecessor[0]).toEqual([vertex2, undefined, vertex2, undefined, vertex3, undefined, vertex4, undefined, undefined]);
|
|
382
|
+
expect(predecessor[1]).toEqual([undefined, vertex1, undefined, vertex1, vertex3, undefined, vertex4, undefined, vertex1]);
|
|
383
|
+
expect(predecessor[5]).toEqual([undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]);
|
|
384
|
+
expect(predecessor[7]).toEqual([undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]);
|
|
385
|
+
expect(predecessor[8]).toEqual([vertex7, vertex7, vertex7, vertex7, vertex7, undefined, undefined, undefined, vertex7]);
|
|
386
386
|
}
|
|
387
387
|
|
|
388
388
|
const dijkstraRes12tt = myGraph.dijkstra(1, 2, true, true);
|
|
@@ -436,7 +436,7 @@ describe('Inherit from DirectedGraph and perform operations test2.', () => {
|
|
|
436
436
|
expect(paths[8][1]).toBe(vertex9);
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
-
const dijkstraRes1ntt = myGraph.dijkstra(1,
|
|
439
|
+
const dijkstraRes1ntt = myGraph.dijkstra(1, undefined, true, true);
|
|
440
440
|
|
|
441
441
|
expect(dijkstraRes1ntt).toBeTruthy();
|
|
442
442
|
if (dijkstraRes1ntt) {
|
|
@@ -499,7 +499,7 @@ describe('Inherit from DirectedGraph and perform operations test2.', () => {
|
|
|
499
499
|
expect(paths[8][1]).toBe(vertex9);
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
const dijkstraWithoutHeapRes1ntt = myGraph.dijkstraWithoutHeap(1,
|
|
502
|
+
const dijkstraWithoutHeapRes1ntt = myGraph.dijkstraWithoutHeap(1, undefined, true, true);
|
|
503
503
|
expect(dijkstraWithoutHeapRes1ntt).toBeTruthy();
|
|
504
504
|
if (dijkstraWithoutHeapRes1ntt) {
|
|
505
505
|
const { distMap, minDist, minPath, paths } = dijkstraWithoutHeapRes1ntt;
|
|
@@ -10,11 +10,11 @@ describe('UndirectedGraph Operation Test', () => {
|
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
it('should edge cases', () => {
|
|
13
|
-
expect(graph.deleteEdge(new UndirectedEdge('c', 'd'))).toBe(
|
|
14
|
-
expect(graph.deleteEdgeBetween('c', 'd')).toBe(
|
|
13
|
+
expect(graph.deleteEdge(new UndirectedEdge('c', 'd'))).toBe(undefined);
|
|
14
|
+
expect(graph.deleteEdgeBetween('c', 'd')).toBe(undefined);
|
|
15
15
|
expect(graph.degreeOf('c')).toBe(0);
|
|
16
16
|
expect(graph.edgesOf('c').length).toBe(0);
|
|
17
|
-
expect(graph.getEndsOfEdge(new UndirectedEdge('c', 'd'))).toBe(
|
|
17
|
+
expect(graph.getEndsOfEdge(new UndirectedEdge('c', 'd'))).toBe(undefined);
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
it('should add vertices', () => {
|