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.
Files changed (78) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  3. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  4. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +9 -6
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.js +29 -10
  6. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/bst.d.ts +1 -1
  8. package/dist/cjs/data-structures/binary-tree/bst.js +2 -2
  9. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +20 -4
  11. package/dist/cjs/data-structures/binary-tree/rb-tree.js +109 -44
  12. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/tree-multiset.js +2 -2
  14. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -1
  15. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  16. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  17. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  18. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  19. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -1
  20. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -1
  21. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  22. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  23. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  24. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  25. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  26. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  27. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -1
  28. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  29. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  30. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  31. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  32. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  33. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +9 -6
  34. package/dist/mjs/data-structures/binary-tree/binary-tree.js +28 -10
  35. package/dist/mjs/data-structures/binary-tree/bst.d.ts +1 -1
  36. package/dist/mjs/data-structures/binary-tree/bst.js +2 -2
  37. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +20 -4
  38. package/dist/mjs/data-structures/binary-tree/rb-tree.js +110 -45
  39. package/dist/mjs/data-structures/binary-tree/tree-multiset.js +2 -2
  40. package/dist/umd/data-structure-typed.min.js +1 -1
  41. package/dist/umd/data-structure-typed.min.js.map +1 -1
  42. package/package.json +9 -9
  43. package/src/data-structures/binary-tree/avl-tree.ts +3 -2
  44. package/src/data-structures/binary-tree/binary-indexed-tree.ts +1 -1
  45. package/src/data-structures/binary-tree/binary-tree.ts +73 -25
  46. package/src/data-structures/binary-tree/bst.ts +7 -4
  47. package/src/data-structures/binary-tree/rb-tree.ts +121 -68
  48. package/src/data-structures/binary-tree/tree-multiset.ts +4 -3
  49. package/src/data-structures/graph/abstract-graph.ts +11 -12
  50. package/src/data-structures/graph/directed-graph.ts +7 -6
  51. package/src/data-structures/graph/undirected-graph.ts +7 -6
  52. package/src/data-structures/hash/hash-map.ts +1 -1
  53. package/src/data-structures/hash/tree-map.ts +1 -2
  54. package/src/data-structures/hash/tree-set.ts +1 -2
  55. package/src/data-structures/heap/heap.ts +2 -2
  56. package/src/data-structures/heap/max-heap.ts +1 -1
  57. package/src/data-structures/heap/min-heap.ts +1 -1
  58. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  59. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  60. package/src/data-structures/matrix/matrix.ts +1 -1
  61. package/src/data-structures/matrix/vector2d.ts +1 -2
  62. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -1
  63. package/src/data-structures/priority-queue/min-priority-queue.ts +1 -1
  64. package/src/data-structures/priority-queue/priority-queue.ts +1 -1
  65. package/src/data-structures/queue/deque.ts +3 -4
  66. package/src/data-structures/queue/queue.ts +1 -1
  67. package/src/types/data-structures/matrix/navigator.ts +1 -1
  68. package/src/types/utils/utils.ts +1 -1
  69. package/src/types/utils/validate-type.ts +2 -2
  70. package/test/integration/avl-tree.test.ts +3 -3
  71. package/test/integration/bst.test.ts +7 -7
  72. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +6 -6
  73. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +11 -11
  74. package/test/unit/data-structures/binary-tree/bst.test.ts +22 -20
  75. package/test/unit/data-structures/binary-tree/overall.test.ts +2 -2
  76. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +214 -21
  77. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +8 -8
  78. package/test/utils/big-o.js +10 -0
@@ -201,7 +201,7 @@ export class Queue<E = any> {
201
201
  return new Queue(this.nodes.slice(this.offset));
202
202
  }
203
203
 
204
- * [Symbol.iterator]() {
204
+ *[Symbol.iterator]() {
205
205
  for (const item of this.nodes) {
206
206
  yield item;
207
207
  }
@@ -1,6 +1,6 @@
1
1
  export type Direction = 'up' | 'right' | 'down' | 'left';
2
2
 
3
- export type Turning = { [key in Direction]: Direction };
3
+ export type Turning = {[key in Direction]: Direction};
4
4
 
5
5
  export type NavigatorParams<T = any> = {
6
6
  matrix: T[][];
@@ -1,5 +1,5 @@
1
1
  export type ToThunkFn = () => ReturnType<TrlFn>;
2
- export type Thunk = () => ReturnType<ToThunkFn> & { __THUNK__: symbol };
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 = { [key: string]: any };
1
+ export type KeyValueObject = {[key: string]: any};
2
2
 
3
- export type KeyValueObjectWithKey = { [key: string]: any; key: string | number | symbol };
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 getNodeById = tree.get(10);
16
- expect(getNodeById?.key).toBe(10);
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.get(15);
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.get(10);
23
+ const nodeId10 = bst.getNode(10);
24
24
  expect(nodeId10?.key).toBe(10);
25
25
 
26
- const nodeVal9 = bst.get(9, node => node.value);
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.get(15);
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.get(11);
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.get(6);
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.get(15);
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.get(11);
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.get(6);
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.get(10);
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.get(15);
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.get(6);
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.get(10);
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.get(15);
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.get(4);
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.get(4), IterationType.RECURSIVE)).toBe(true);
173
- expect(tree.isSubtreeBST(tree.get(4), IterationType.ITERATIVE)).toBe(true);
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.get(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
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.get(1);
238
- const node2 = tree.get(2);
239
- const node3 = tree.get(3);
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.get(5);
343
- const nodeB = tree.get(3);
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.get(3);
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.get(3)).toBe(null);
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.get(6);
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.get(10);
26
+ const nodeId10 = bst.getNode(10);
27
27
  expect(nodeId10?.key).toBe(10);
28
28
 
29
- const nodeVal9 = bst.get(9, node => node.value);
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.get(15);
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.get(11);
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.get(6);
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.get(10);
229
+ const nodeId10 = objBST.getNode(10);
230
230
  expect(nodeId10?.key).toBe(10);
231
231
 
232
- const nodeVal9 = objBST.get(9);
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.get(15);
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.get(11);
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.get(6);
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.get(10);
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.get(9, node => node.value);
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.get(15);
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.get(11);
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.get(6);
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.get(10);
621
+ const nodeId10 = objBST.getNode(10);
620
622
  expect(nodeId10?.key).toBe(10);
621
623
 
622
- const nodeVal9 = objBST.get(9);
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.get(15);
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.get(11);
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.get(6); // null
24
- expect(bst.get(6)).toBeNull();
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[] = [];