data-structure-typed 1.41.0 → 1.41.2
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/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +9 -6
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +29 -10
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.js +2 -2
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +20 -4
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +109 -44
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multiset.js +2 -2
- package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/hash/tree-map.js.map +1 -1
- package/dist/cjs/data-structures/hash/tree-set.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
- package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +9 -6
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +28 -10
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/bst.js +2 -2
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +20 -4
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +110 -45
- package/dist/mjs/data-structures/binary-tree/tree-multiset.js +2 -2
- package/dist/umd/data-structure-typed.min.js +1 -1
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +9 -9
- package/src/data-structures/binary-tree/avl-tree.ts +3 -2
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +1 -1
- package/src/data-structures/binary-tree/binary-tree.ts +73 -25
- package/src/data-structures/binary-tree/bst.ts +7 -4
- package/src/data-structures/binary-tree/rb-tree.ts +121 -68
- package/src/data-structures/binary-tree/tree-multiset.ts +4 -3
- package/src/data-structures/graph/abstract-graph.ts +11 -12
- package/src/data-structures/graph/directed-graph.ts +7 -6
- package/src/data-structures/graph/undirected-graph.ts +7 -6
- package/src/data-structures/hash/hash-map.ts +1 -1
- package/src/data-structures/hash/tree-map.ts +1 -2
- package/src/data-structures/hash/tree-set.ts +1 -2
- package/src/data-structures/heap/heap.ts +2 -2
- package/src/data-structures/heap/max-heap.ts +1 -1
- package/src/data-structures/heap/min-heap.ts +1 -1
- package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
- package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
- package/src/data-structures/matrix/matrix.ts +1 -1
- package/src/data-structures/matrix/vector2d.ts +1 -2
- package/src/data-structures/priority-queue/max-priority-queue.ts +1 -1
- package/src/data-structures/priority-queue/min-priority-queue.ts +1 -1
- package/src/data-structures/priority-queue/priority-queue.ts +1 -1
- package/src/data-structures/queue/deque.ts +3 -4
- package/src/data-structures/queue/queue.ts +1 -1
- package/src/types/data-structures/matrix/navigator.ts +1 -1
- package/src/types/utils/utils.ts +1 -1
- package/src/types/utils/validate-type.ts +2 -2
- package/test/integration/avl-tree.test.ts +3 -3
- package/test/integration/bst.test.ts +7 -7
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +6 -6
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +11 -11
- package/test/unit/data-structures/binary-tree/bst.test.ts +22 -20
- package/test/unit/data-structures/binary-tree/overall.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +214 -21
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +8 -8
- package/test/utils/big-o.js +10 -0
package/src/types/utils/utils.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type ToThunkFn = () => ReturnType<TrlFn>;
|
|
2
|
-
export type Thunk = () => ReturnType<ToThunkFn> & {
|
|
2
|
+
export type Thunk = () => ReturnType<ToThunkFn> & {__THUNK__: symbol};
|
|
3
3
|
export type TrlFn = (...args: any[]) => any;
|
|
4
4
|
export type TrlAsyncFn = (...args: any[]) => any;
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type KeyValueObject = {
|
|
1
|
+
export type KeyValueObject = {[key: string]: any};
|
|
2
2
|
|
|
3
|
-
export type KeyValueObjectWithKey = {
|
|
3
|
+
export type KeyValueObjectWithKey = {[key: string]: any; key: string | number | symbol};
|
|
4
4
|
|
|
5
5
|
export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
|
|
6
6
|
|
|
@@ -12,13 +12,13 @@ describe('AVL Tree Test', () => {
|
|
|
12
12
|
expect(node6 && tree.getHeight(node6)).toBe(3);
|
|
13
13
|
expect(node6 && tree.getDepth(node6)).toBe(1);
|
|
14
14
|
|
|
15
|
-
const
|
|
16
|
-
expect(
|
|
15
|
+
const getValueById = tree.get(10);
|
|
16
|
+
expect(getValueById).toBe(10);
|
|
17
17
|
|
|
18
18
|
const getMinNodeByRoot = tree.getLeftMost();
|
|
19
19
|
expect(getMinNodeByRoot?.key).toBe(1);
|
|
20
20
|
|
|
21
|
-
const node15 = tree.
|
|
21
|
+
const node15 = tree.getNode(15);
|
|
22
22
|
const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
|
|
23
23
|
expect(getMinNodeBySpecificNode?.key).toBe(12);
|
|
24
24
|
|
|
@@ -20,16 +20,16 @@ describe('Individual package BST operations test', () => {
|
|
|
20
20
|
expect(node6 && bst.getHeight(6)).toBe(2);
|
|
21
21
|
expect(node6 && bst.getDepth(6)).toBe(3);
|
|
22
22
|
|
|
23
|
-
const nodeId10 = bst.
|
|
23
|
+
const nodeId10 = bst.getNode(10);
|
|
24
24
|
expect(nodeId10?.key).toBe(10);
|
|
25
25
|
|
|
26
|
-
const nodeVal9 = bst.
|
|
26
|
+
const nodeVal9 = bst.getNode(9, node => node.value);
|
|
27
27
|
expect(nodeVal9?.key).toBe(9);
|
|
28
28
|
|
|
29
29
|
const leftMost = bst.getLeftMost();
|
|
30
30
|
expect(leftMost?.key).toBe(1);
|
|
31
31
|
|
|
32
|
-
const node15 = bst.
|
|
32
|
+
const node15 = bst.getNode(15);
|
|
33
33
|
const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
|
|
34
34
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
35
35
|
|
|
@@ -43,7 +43,7 @@ describe('Individual package BST operations test', () => {
|
|
|
43
43
|
|
|
44
44
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
45
45
|
|
|
46
|
-
const node11 = bst.
|
|
46
|
+
const node11 = bst.getNode(11);
|
|
47
47
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
48
48
|
|
|
49
49
|
const dfsInorderNodes = bst.dfs(node => node, 'in');
|
|
@@ -216,7 +216,7 @@ describe('Individual package BST operations test', () => {
|
|
|
216
216
|
|
|
217
217
|
expect(objBST.has(6)).toBe(true);
|
|
218
218
|
|
|
219
|
-
const node6 = objBST.
|
|
219
|
+
const node6 = objBST.getNode(6);
|
|
220
220
|
expect(node6 && objBST.getHeight(node6)).toBe(2);
|
|
221
221
|
expect(node6 && objBST.getDepth(node6)).toBe(3);
|
|
222
222
|
|
|
@@ -229,7 +229,7 @@ describe('Individual package BST operations test', () => {
|
|
|
229
229
|
const leftMost = objBST.getLeftMost();
|
|
230
230
|
expect(leftMost?.key).toBe(1);
|
|
231
231
|
|
|
232
|
-
const node15 = objBST.
|
|
232
|
+
const node15 = objBST.getNode(15);
|
|
233
233
|
expect(node15?.value).toEqual({key: 15, keyA: 15});
|
|
234
234
|
const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
|
|
235
235
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
@@ -244,7 +244,7 @@ describe('Individual package BST operations test', () => {
|
|
|
244
244
|
|
|
245
245
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
246
246
|
|
|
247
|
-
const node11 = objBST.
|
|
247
|
+
const node11 = objBST.getNode(11);
|
|
248
248
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
249
249
|
|
|
250
250
|
const dfsInorderNodes = objBST.dfs(node => node, 'in');
|
|
@@ -7,18 +7,18 @@ describe('AVL Tree Test', () => {
|
|
|
7
7
|
|
|
8
8
|
for (const i of arr) tree.add(i, i);
|
|
9
9
|
|
|
10
|
-
const node6 = tree.
|
|
10
|
+
const node6 = tree.getNode(6);
|
|
11
11
|
|
|
12
12
|
expect(node6 && tree.getHeight(node6)).toBe(3);
|
|
13
13
|
expect(node6 && tree.getDepth(node6)).toBe(1);
|
|
14
14
|
|
|
15
|
-
const getNodeById = tree.
|
|
15
|
+
const getNodeById = tree.getNode(10);
|
|
16
16
|
expect(getNodeById?.key).toBe(10);
|
|
17
17
|
|
|
18
18
|
const getMinNodeByRoot = tree.getLeftMost();
|
|
19
19
|
expect(getMinNodeByRoot?.key).toBe(1);
|
|
20
20
|
|
|
21
|
-
const node15 = tree.
|
|
21
|
+
const node15 = tree.getNode(15);
|
|
22
22
|
const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
|
|
23
23
|
expect(getMinNodeBySpecificNode?.key).toBe(12);
|
|
24
24
|
|
|
@@ -116,18 +116,18 @@ describe('AVL Tree Test recursively', () => {
|
|
|
116
116
|
|
|
117
117
|
for (const i of arr) tree.add(i, i);
|
|
118
118
|
|
|
119
|
-
const node6 = tree.
|
|
119
|
+
const node6 = tree.getNode(6);
|
|
120
120
|
|
|
121
121
|
expect(node6 && tree.getHeight(node6)).toBe(3);
|
|
122
122
|
expect(node6 && tree.getDepth(node6)).toBe(1);
|
|
123
123
|
|
|
124
|
-
const getNodeById = tree.
|
|
124
|
+
const getNodeById = tree.getNode(10);
|
|
125
125
|
expect(getNodeById?.key).toBe(10);
|
|
126
126
|
|
|
127
127
|
const getMinNodeByRoot = tree.getLeftMost();
|
|
128
128
|
expect(getMinNodeByRoot?.key).toBe(1);
|
|
129
129
|
|
|
130
|
-
const node15 = tree.
|
|
130
|
+
const node15 = tree.getNode(15);
|
|
131
131
|
const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
|
|
132
132
|
expect(getMinNodeBySpecificNode?.key).toBe(12);
|
|
133
133
|
|
|
@@ -107,7 +107,7 @@ describe('BinaryTree', () => {
|
|
|
107
107
|
expect(tree.has(2)).toBe(true);
|
|
108
108
|
expect(tree.has(3)).toBe(true);
|
|
109
109
|
expect(tree.has(4)).toBe(false);
|
|
110
|
-
const node4 = tree.
|
|
110
|
+
const node4 = tree.getNode(4);
|
|
111
111
|
expect(tree.has(node4)).toBe(false);
|
|
112
112
|
expect(tree.has(node4, node => node)).toBe(false);
|
|
113
113
|
expect(tree.has('3', node => node.value?.toString())).toBe(true);
|
|
@@ -169,13 +169,13 @@ describe('BinaryTree', () => {
|
|
|
169
169
|
new BinaryTreeNode(4, 4)
|
|
170
170
|
]);
|
|
171
171
|
|
|
172
|
-
expect(tree.isSubtreeBST(tree.
|
|
173
|
-
expect(tree.isSubtreeBST(tree.
|
|
172
|
+
expect(tree.isSubtreeBST(tree.getNode(4), IterationType.RECURSIVE)).toBe(true);
|
|
173
|
+
expect(tree.isSubtreeBST(tree.getNode(4), IterationType.ITERATIVE)).toBe(true);
|
|
174
174
|
});
|
|
175
175
|
|
|
176
176
|
it('should subTreeTraverse', () => {
|
|
177
177
|
tree.addMany([4, 2, 6, 1, 3, 5, 7]);
|
|
178
|
-
expect(tree.subTreeTraverse(node => node.key, tree.
|
|
178
|
+
expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
|
|
179
179
|
});
|
|
180
180
|
|
|
181
181
|
it('should clear the tree', () => {
|
|
@@ -234,9 +234,9 @@ describe('BinaryTree Morris Traversal', () => {
|
|
|
234
234
|
});
|
|
235
235
|
|
|
236
236
|
it('after morris traversals should the structure of the tree be correct', () => {
|
|
237
|
-
const node1 = tree.
|
|
238
|
-
const node2 = tree.
|
|
239
|
-
const node3 = tree.
|
|
237
|
+
const node1 = tree.getNode(1);
|
|
238
|
+
const node2 = tree.getNode(2);
|
|
239
|
+
const node3 = tree.getNode(3);
|
|
240
240
|
expect(node1?.left).toBe(node2);
|
|
241
241
|
expect(node1?.right).toBe(node3);
|
|
242
242
|
});
|
|
@@ -339,8 +339,8 @@ describe('BinaryTree', () => {
|
|
|
339
339
|
tree.add(3, 'B');
|
|
340
340
|
tree.add(7, 'C');
|
|
341
341
|
|
|
342
|
-
const nodeA = tree.
|
|
343
|
-
const nodeB = tree.
|
|
342
|
+
const nodeA = tree.getNode(5);
|
|
343
|
+
const nodeB = tree.getNode(3);
|
|
344
344
|
|
|
345
345
|
expect(nodeA?.key).toBe(5);
|
|
346
346
|
expect(nodeA?.value).toBe('A');
|
|
@@ -351,7 +351,7 @@ describe('BinaryTree', () => {
|
|
|
351
351
|
it('should return null when getting a non-existent node', () => {
|
|
352
352
|
tree.add(5, 'A');
|
|
353
353
|
|
|
354
|
-
const node = tree.
|
|
354
|
+
const node = tree.getNode(3);
|
|
355
355
|
|
|
356
356
|
expect(node).toBe(null);
|
|
357
357
|
});
|
|
@@ -421,7 +421,7 @@ describe('BinaryTree', () => {
|
|
|
421
421
|
tree.delete(3);
|
|
422
422
|
|
|
423
423
|
expect(tree.size).toBe(2);
|
|
424
|
-
expect(tree.
|
|
424
|
+
expect(tree.getNode(3)).toBe(null);
|
|
425
425
|
});
|
|
426
426
|
|
|
427
427
|
it('should check if the tree is perfectly balanced', () => {
|
|
@@ -19,20 +19,20 @@ describe('BST operations test', () => {
|
|
|
19
19
|
|
|
20
20
|
expect(bst.has(6)).toBe(true);
|
|
21
21
|
|
|
22
|
-
const node6 = bst.
|
|
22
|
+
const node6 = bst.getNode(6);
|
|
23
23
|
expect(node6 && bst.getHeight(6)).toBe(2);
|
|
24
24
|
expect(node6 && bst.getDepth(6)).toBe(3);
|
|
25
25
|
|
|
26
|
-
const nodeId10 = bst.
|
|
26
|
+
const nodeId10 = bst.getNode(10);
|
|
27
27
|
expect(nodeId10?.key).toBe(10);
|
|
28
28
|
|
|
29
|
-
const nodeVal9 = bst.
|
|
29
|
+
const nodeVal9 = bst.getNode(9, node => node.value);
|
|
30
30
|
expect(nodeVal9?.key).toBe(9);
|
|
31
31
|
|
|
32
32
|
const leftMost = bst.getLeftMost();
|
|
33
33
|
expect(leftMost?.key).toBe(1);
|
|
34
34
|
|
|
35
|
-
const node15 = bst.
|
|
35
|
+
const node15 = bst.getNode(15);
|
|
36
36
|
const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
|
|
37
37
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
38
38
|
|
|
@@ -46,7 +46,7 @@ describe('BST operations test', () => {
|
|
|
46
46
|
|
|
47
47
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
48
48
|
|
|
49
|
-
const node11 = bst.
|
|
49
|
+
const node11 = bst.getNode(11);
|
|
50
50
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
51
51
|
|
|
52
52
|
const dfsInorderNodes = bst.dfs(node => node, 'in');
|
|
@@ -222,20 +222,20 @@ describe('BST operations test', () => {
|
|
|
222
222
|
|
|
223
223
|
expect(objBST.has(6)).toBe(true);
|
|
224
224
|
|
|
225
|
-
const node6 = objBST.
|
|
225
|
+
const node6 = objBST.getNode(6);
|
|
226
226
|
expect(node6 && objBST.getHeight(node6)).toBe(2);
|
|
227
227
|
expect(node6 && objBST.getDepth(node6)).toBe(3);
|
|
228
228
|
|
|
229
|
-
const nodeId10 = objBST.
|
|
229
|
+
const nodeId10 = objBST.getNode(10);
|
|
230
230
|
expect(nodeId10?.key).toBe(10);
|
|
231
231
|
|
|
232
|
-
const nodeVal9 = objBST.
|
|
232
|
+
const nodeVal9 = objBST.getNode(9);
|
|
233
233
|
expect(nodeVal9?.key).toBe(9);
|
|
234
234
|
|
|
235
235
|
const leftMost = objBST.getLeftMost();
|
|
236
236
|
expect(leftMost?.key).toBe(1);
|
|
237
237
|
|
|
238
|
-
const node15 = objBST.
|
|
238
|
+
const node15 = objBST.getNode(15);
|
|
239
239
|
expect(node15?.value).toEqual({key: 15, keyA: 15});
|
|
240
240
|
const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
|
|
241
241
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
@@ -250,7 +250,7 @@ describe('BST operations test', () => {
|
|
|
250
250
|
|
|
251
251
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
252
252
|
|
|
253
|
-
const node11 = objBST.
|
|
253
|
+
const node11 = objBST.getNode(11);
|
|
254
254
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
255
255
|
|
|
256
256
|
const dfsInorderNodes = objBST.dfs(node => node, 'in');
|
|
@@ -409,20 +409,21 @@ describe('BST operations test recursively', () => {
|
|
|
409
409
|
|
|
410
410
|
expect(bst.has(6)).toBe(true);
|
|
411
411
|
|
|
412
|
-
const node6 = bst.
|
|
412
|
+
const node6 = bst.getNode(6);
|
|
413
413
|
expect(node6 && bst.getHeight(6)).toBe(2);
|
|
414
414
|
expect(node6 && bst.getDepth(6)).toBe(3);
|
|
415
415
|
|
|
416
|
-
const nodeId10 = bst.
|
|
416
|
+
const nodeId10 = bst.getNode(10);
|
|
417
|
+
expect(bst.get(10)).toBe(10);
|
|
417
418
|
expect(nodeId10?.key).toBe(10);
|
|
418
419
|
|
|
419
|
-
const nodeVal9 = bst.
|
|
420
|
+
const nodeVal9 = bst.getNode(9, node => node.value);
|
|
420
421
|
expect(nodeVal9?.key).toBe(9);
|
|
421
422
|
|
|
422
423
|
const leftMost = bst.getLeftMost();
|
|
423
424
|
expect(leftMost?.key).toBe(1);
|
|
424
425
|
|
|
425
|
-
const node15 = bst.
|
|
426
|
+
const node15 = bst.getNode(15);
|
|
426
427
|
const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
|
|
427
428
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
428
429
|
|
|
@@ -436,7 +437,7 @@ describe('BST operations test recursively', () => {
|
|
|
436
437
|
|
|
437
438
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
438
439
|
|
|
439
|
-
const node11 = bst.
|
|
440
|
+
const node11 = bst.getNode(11);
|
|
440
441
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
441
442
|
|
|
442
443
|
const dfsInorderNodes = bst.dfs(node => node, 'in');
|
|
@@ -612,20 +613,21 @@ describe('BST operations test recursively', () => {
|
|
|
612
613
|
|
|
613
614
|
expect(objBST.has(6)).toBe(true);
|
|
614
615
|
|
|
615
|
-
const node6 = objBST.
|
|
616
|
+
const node6 = objBST.getNode(6);
|
|
617
|
+
expect(objBST.get(6)).toEqual({key: 6, keyA: 6});
|
|
616
618
|
expect(node6 && objBST.getHeight(node6)).toBe(2);
|
|
617
619
|
expect(node6 && objBST.getDepth(node6)).toBe(3);
|
|
618
620
|
|
|
619
|
-
const nodeId10 = objBST.
|
|
621
|
+
const nodeId10 = objBST.getNode(10);
|
|
620
622
|
expect(nodeId10?.key).toBe(10);
|
|
621
623
|
|
|
622
|
-
const nodeVal9 = objBST.
|
|
624
|
+
const nodeVal9 = objBST.getNode(9);
|
|
623
625
|
expect(nodeVal9?.key).toBe(9);
|
|
624
626
|
|
|
625
627
|
const leftMost = objBST.getLeftMost();
|
|
626
628
|
expect(leftMost?.key).toBe(1);
|
|
627
629
|
|
|
628
|
-
const node15 = objBST.
|
|
630
|
+
const node15 = objBST.getNode(15);
|
|
629
631
|
expect(node15?.value).toEqual({key: 15, keyA: 15});
|
|
630
632
|
const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
|
|
631
633
|
expect(minNodeBySpecificNode?.key).toBe(12);
|
|
@@ -640,7 +642,7 @@ describe('BST operations test recursively', () => {
|
|
|
640
642
|
|
|
641
643
|
expect(node15).toBeInstanceOf(BSTNode);
|
|
642
644
|
|
|
643
|
-
const node11 = objBST.
|
|
645
|
+
const node11 = objBST.getNode(11);
|
|
644
646
|
expect(node11).toBeInstanceOf(BSTNode);
|
|
645
647
|
|
|
646
648
|
const dfsInorderNodes = objBST.dfs(node => node, 'in');
|
|
@@ -20,8 +20,8 @@ describe('Overall BinaryTree Test', () => {
|
|
|
20
20
|
leftMost?.key === 1; // true
|
|
21
21
|
expect(leftMost?.key).toBe(1);
|
|
22
22
|
bst.delete(6);
|
|
23
|
-
bst.
|
|
24
|
-
expect(bst.
|
|
23
|
+
bst.getNode(6); // null
|
|
24
|
+
expect(bst.getNode(6)).toBeNull();
|
|
25
25
|
bst.isAVLBalanced(); // true or false
|
|
26
26
|
expect(bst.isAVLBalanced()).toBe(true);
|
|
27
27
|
const bfsIDs: number[] = [];
|