data-structure-typed 1.33.7 → 1.33.9

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 (149) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +25 -14
  3. package/package.json +22 -22
  4. package/.prettierrc.js +0 -16
  5. package/coverage/coverage-final.json +0 -68
  6. package/coverage/coverage-summary.json +0 -69
  7. package/docs/.nojekyll +0 -1
  8. package/docs/index.html +0 -875
  9. package/docs/modules.html +0 -336
  10. package/jest.config.js +0 -8
  11. package/src/data-structures/binary-tree/aa-tree.ts +0 -1
  12. package/src/data-structures/binary-tree/abstract-binary-tree.ts +0 -1608
  13. package/src/data-structures/binary-tree/avl-tree.ts +0 -307
  14. package/src/data-structures/binary-tree/b-tree.ts +0 -1
  15. package/src/data-structures/binary-tree/binary-indexed-tree.ts +0 -76
  16. package/src/data-structures/binary-tree/binary-tree.ts +0 -47
  17. package/src/data-structures/binary-tree/bst.ts +0 -537
  18. package/src/data-structures/binary-tree/index.ts +0 -12
  19. package/src/data-structures/binary-tree/rb-tree.ts +0 -366
  20. package/src/data-structures/binary-tree/segment-tree.ts +0 -260
  21. package/src/data-structures/binary-tree/splay-tree.ts +0 -1
  22. package/src/data-structures/binary-tree/tree-multiset.ts +0 -700
  23. package/src/data-structures/binary-tree/two-three-tree.ts +0 -1
  24. package/src/data-structures/graph/abstract-graph.ts +0 -1040
  25. package/src/data-structures/graph/directed-graph.ts +0 -470
  26. package/src/data-structures/graph/index.ts +0 -4
  27. package/src/data-structures/graph/map-graph.ts +0 -129
  28. package/src/data-structures/graph/undirected-graph.ts +0 -274
  29. package/src/data-structures/hash/coordinate-map.ts +0 -67
  30. package/src/data-structures/hash/coordinate-set.ts +0 -56
  31. package/src/data-structures/hash/hash-map.ts +0 -203
  32. package/src/data-structures/hash/hash-table.ts +0 -277
  33. package/src/data-structures/hash/index.ts +0 -7
  34. package/src/data-structures/hash/pair.ts +0 -1
  35. package/src/data-structures/hash/tree-map.ts +0 -1
  36. package/src/data-structures/hash/tree-set.ts +0 -1
  37. package/src/data-structures/heap/heap.ts +0 -212
  38. package/src/data-structures/heap/index.ts +0 -3
  39. package/src/data-structures/heap/max-heap.ts +0 -31
  40. package/src/data-structures/heap/min-heap.ts +0 -32
  41. package/src/data-structures/index.ts +0 -11
  42. package/src/data-structures/linked-list/doubly-linked-list.ts +0 -636
  43. package/src/data-structures/linked-list/index.ts +0 -3
  44. package/src/data-structures/linked-list/singly-linked-list.ts +0 -501
  45. package/src/data-structures/linked-list/skip-linked-list.ts +0 -166
  46. package/src/data-structures/matrix/index.ts +0 -4
  47. package/src/data-structures/matrix/matrix.ts +0 -27
  48. package/src/data-structures/matrix/matrix2d.ts +0 -213
  49. package/src/data-structures/matrix/navigator.ts +0 -121
  50. package/src/data-structures/matrix/vector2d.ts +0 -316
  51. package/src/data-structures/priority-queue/index.ts +0 -3
  52. package/src/data-structures/priority-queue/max-priority-queue.ts +0 -56
  53. package/src/data-structures/priority-queue/min-priority-queue.ts +0 -57
  54. package/src/data-structures/priority-queue/priority-queue.ts +0 -359
  55. package/src/data-structures/queue/deque.ts +0 -297
  56. package/src/data-structures/queue/index.ts +0 -2
  57. package/src/data-structures/queue/queue.ts +0 -191
  58. package/src/data-structures/stack/index.ts +0 -1
  59. package/src/data-structures/stack/stack.ts +0 -98
  60. package/src/data-structures/tree/index.ts +0 -1
  61. package/src/data-structures/tree/tree.ts +0 -69
  62. package/src/data-structures/trie/index.ts +0 -1
  63. package/src/data-structures/trie/trie.ts +0 -225
  64. package/src/index.ts +0 -4
  65. package/src/interfaces/abstract-binary-tree.ts +0 -189
  66. package/src/interfaces/abstract-graph.ts +0 -31
  67. package/src/interfaces/avl-tree.ts +0 -25
  68. package/src/interfaces/binary-tree.ts +0 -6
  69. package/src/interfaces/bst.ts +0 -31
  70. package/src/interfaces/directed-graph.ts +0 -20
  71. package/src/interfaces/doubly-linked-list.ts +0 -1
  72. package/src/interfaces/heap.ts +0 -1
  73. package/src/interfaces/index.ts +0 -15
  74. package/src/interfaces/navigator.ts +0 -1
  75. package/src/interfaces/priority-queue.ts +0 -1
  76. package/src/interfaces/rb-tree.ts +0 -9
  77. package/src/interfaces/segment-tree.ts +0 -1
  78. package/src/interfaces/singly-linked-list.ts +0 -1
  79. package/src/interfaces/tree-multiset.ts +0 -7
  80. package/src/interfaces/undirected-graph.ts +0 -6
  81. package/src/types/data-structures/abstract-binary-tree.ts +0 -50
  82. package/src/types/data-structures/abstract-graph.ts +0 -11
  83. package/src/types/data-structures/avl-tree.ts +0 -5
  84. package/src/types/data-structures/binary-tree.ts +0 -5
  85. package/src/types/data-structures/bst.ts +0 -13
  86. package/src/types/data-structures/directed-graph.ts +0 -8
  87. package/src/types/data-structures/doubly-linked-list.ts +0 -1
  88. package/src/types/data-structures/hash.ts +0 -1
  89. package/src/types/data-structures/heap.ts +0 -5
  90. package/src/types/data-structures/index.ts +0 -16
  91. package/src/types/data-structures/map-graph.ts +0 -1
  92. package/src/types/data-structures/navigator.ts +0 -13
  93. package/src/types/data-structures/priority-queue.ts +0 -9
  94. package/src/types/data-structures/rb-tree.ts +0 -8
  95. package/src/types/data-structures/segment-tree.ts +0 -1
  96. package/src/types/data-structures/singly-linked-list.ts +0 -1
  97. package/src/types/data-structures/tree-multiset.ts +0 -6
  98. package/src/types/helpers.ts +0 -1
  99. package/src/types/index.ts +0 -3
  100. package/src/types/utils/index.ts +0 -2
  101. package/src/types/utils/utils.ts +0 -6
  102. package/src/types/utils/validate-type.ts +0 -35
  103. package/src/utils/index.ts +0 -1
  104. package/src/utils/utils.ts +0 -79
  105. package/test/integration/avl-tree.test.ts +0 -108
  106. package/test/integration/bst.test.ts +0 -380
  107. package/test/integration/heap.test.js +0 -16
  108. package/test/integration/index.html +0 -44
  109. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -108
  110. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -142
  111. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -380
  112. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -65
  113. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +0 -43
  114. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -50
  115. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +0 -461
  116. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -5
  117. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -519
  118. package/test/unit/data-structures/graph/index.ts +0 -2
  119. package/test/unit/data-structures/graph/map-graph.test.ts +0 -45
  120. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  121. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -59
  122. package/test/unit/data-structures/hash/coordinate-map.test.ts +0 -54
  123. package/test/unit/data-structures/hash/coordinate-set.test.ts +0 -41
  124. package/test/unit/data-structures/hash/hash-map.test.ts +0 -104
  125. package/test/unit/data-structures/hash/hash-table.test.ts +0 -184
  126. package/test/unit/data-structures/heap/heap.test.ts +0 -55
  127. package/test/unit/data-structures/heap/max-heap.test.ts +0 -44
  128. package/test/unit/data-structures/heap/min-heap.test.ts +0 -82
  129. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -364
  130. package/test/unit/data-structures/linked-list/index.ts +0 -4
  131. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -35
  132. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -451
  133. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  134. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -55
  135. package/test/unit/data-structures/matrix/matrix.test.ts +0 -54
  136. package/test/unit/data-structures/matrix/matrix2d.test.ts +0 -138
  137. package/test/unit/data-structures/matrix/navigator.test.ts +0 -79
  138. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -106
  139. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -105
  140. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -27
  141. package/test/unit/data-structures/queue/deque.test.ts +0 -130
  142. package/test/unit/data-structures/queue/queue.test.ts +0 -199
  143. package/test/unit/data-structures/stack/stack.test.ts +0 -67
  144. package/test/unit/data-structures/tree/tree.test.ts +0 -39
  145. package/test/unit/data-structures/trie/trie.test.ts +0 -95
  146. package/test/utils/index.ts +0 -2
  147. package/test/utils/magnitude.ts +0 -21
  148. package/test/utils/number.ts +0 -3
  149. package/tsconfig.json +0 -29
@@ -1,380 +0,0 @@
1
- import {BST, BSTNode} from '../../../../src';
2
-
3
- describe('BST operations test', () => {
4
- it('should perform various operations on a Binary Search Tree with numeric values', () => {
5
- const bst = new BST();
6
- expect(bst).toBeInstanceOf(BST);
7
- bst.add(11, 11);
8
- bst.add(3, 3);
9
- const idsAndValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
10
- bst.addMany(idsAndValues, idsAndValues);
11
- expect(bst.root).toBeInstanceOf(BSTNode);
12
-
13
- if (bst.root) expect(bst.root.id).toBe(11);
14
-
15
- expect(bst.size).toBe(16);
16
-
17
- expect(bst.has(6)).toBe(true);
18
-
19
- const node6 = bst.get(6);
20
- expect(node6 && bst.getHeight(6)).toBe(2);
21
- expect(node6 && bst.getDepth(6)).toBe(3);
22
-
23
- const nodeId10 = bst.get(10);
24
- expect(nodeId10?.id).toBe(10);
25
-
26
- const nodeVal9 = bst.get(9, 'val');
27
- expect(nodeVal9?.id).toBe(9);
28
-
29
- const leftMost = bst.getLeftMost();
30
- expect(leftMost?.id).toBe(1);
31
-
32
- const node15 = bst.get(15);
33
- const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
34
- expect(minNodeBySpecificNode?.id).toBe(12);
35
-
36
- const subTreeSum = node15 && bst.subTreeSum(15);
37
- expect(subTreeSum).toBe(70);
38
-
39
- const lesserSum = bst.lesserSum(10);
40
- expect(lesserSum).toBe(45);
41
-
42
- expect(node15).toBeInstanceOf(BSTNode);
43
-
44
- const node11 = bst.get(11);
45
- expect(node11).toBeInstanceOf(BSTNode);
46
-
47
- const dfsInorderNodes = bst.DFS('in', 'node');
48
- expect(dfsInorderNodes[0].id).toBe(1);
49
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
50
-
51
- bst.perfectlyBalance();
52
- expect(bst.isPerfectlyBalanced()).toBe(true);
53
-
54
- const bfsNodesAfterBalanced = bst.BFS('node');
55
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
56
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
57
-
58
- const removed11 = bst.remove(11);
59
- expect(removed11).toBeInstanceOf(Array);
60
- expect(removed11[0]).toBeDefined();
61
- expect(removed11[0].deleted).toBeDefined();
62
-
63
- if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
64
-
65
- expect(bst.isAVLBalanced()).toBe(true);
66
-
67
- expect(bst.getHeight(15)).toBe(1);
68
-
69
- const removed1 = bst.remove(1);
70
- expect(removed1).toBeInstanceOf(Array);
71
- expect(removed1[0]).toBeDefined();
72
- expect(removed1[0].deleted).toBeDefined();
73
- if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
74
-
75
- expect(bst.isAVLBalanced()).toBe(true);
76
-
77
- expect(bst.getHeight()).toBe(4);
78
-
79
- const removed4 = bst.remove(4);
80
- expect(removed4).toBeInstanceOf(Array);
81
- expect(removed4[0]).toBeDefined();
82
- expect(removed4[0].deleted).toBeDefined();
83
- if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
84
- expect(bst.isAVLBalanced()).toBe(true);
85
- expect(bst.getHeight()).toBe(4);
86
-
87
- const removed10 = bst.remove(10);
88
- expect(removed10).toBeInstanceOf(Array);
89
- expect(removed10[0]).toBeDefined();
90
- expect(removed10[0].deleted).toBeDefined();
91
- if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
92
- expect(bst.isAVLBalanced()).toBe(false);
93
- expect(bst.getHeight()).toBe(4);
94
-
95
- const removed15 = bst.remove(15);
96
- expect(removed15).toBeInstanceOf(Array);
97
- expect(removed15[0]).toBeDefined();
98
- expect(removed15[0].deleted).toBeDefined();
99
- if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
100
-
101
- expect(bst.isAVLBalanced()).toBe(true);
102
- expect(bst.getHeight()).toBe(3);
103
-
104
- const removed5 = bst.remove(5);
105
- expect(removed5).toBeInstanceOf(Array);
106
- expect(removed5[0]).toBeDefined();
107
- expect(removed5[0].deleted).toBeDefined();
108
- if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
109
-
110
- expect(bst.isAVLBalanced()).toBe(true);
111
- expect(bst.getHeight()).toBe(3);
112
-
113
- const removed13 = bst.remove(13);
114
- expect(removed13).toBeInstanceOf(Array);
115
- expect(removed13[0]).toBeDefined();
116
- expect(removed13[0].deleted).toBeDefined();
117
- if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
118
- expect(bst.isAVLBalanced()).toBe(true);
119
- expect(bst.getHeight()).toBe(3);
120
-
121
- const removed3 = bst.remove(3);
122
- expect(removed3).toBeInstanceOf(Array);
123
- expect(removed3[0]).toBeDefined();
124
- expect(removed3[0].deleted).toBeDefined();
125
- if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
126
- expect(bst.isAVLBalanced()).toBe(false);
127
- expect(bst.getHeight()).toBe(3);
128
-
129
- const removed8 = bst.remove(8);
130
- expect(removed8).toBeInstanceOf(Array);
131
- expect(removed8[0]).toBeDefined();
132
- expect(removed8[0].deleted).toBeDefined();
133
- if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
134
- expect(bst.isAVLBalanced()).toBe(true);
135
- expect(bst.getHeight()).toBe(3);
136
-
137
- const removed6 = bst.remove(6);
138
- expect(removed6).toBeInstanceOf(Array);
139
- expect(removed6[0]).toBeDefined();
140
- expect(removed6[0].deleted).toBeDefined();
141
- if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
142
- expect(bst.remove(6).length).toBe(0);
143
- expect(bst.isAVLBalanced()).toBe(false);
144
- expect(bst.getHeight()).toBe(3);
145
-
146
- const removed7 = bst.remove(7);
147
- expect(removed7).toBeInstanceOf(Array);
148
- expect(removed7[0]).toBeDefined();
149
- expect(removed7[0].deleted).toBeDefined();
150
- if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
151
- expect(bst.isAVLBalanced()).toBe(false);
152
- expect(bst.getHeight()).toBe(3);
153
-
154
- const removed9 = bst.remove(9);
155
- expect(removed9).toBeInstanceOf(Array);
156
- expect(removed9[0]).toBeDefined();
157
- expect(removed9[0].deleted).toBeDefined();
158
- if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
159
- expect(bst.isAVLBalanced()).toBe(false);
160
- expect(bst.getHeight()).toBe(3);
161
-
162
- const removed14 = bst.remove(14);
163
- expect(removed14).toBeInstanceOf(Array);
164
- expect(removed14[0]).toBeDefined();
165
- expect(removed14[0].deleted).toBeDefined();
166
- if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
167
- expect(bst.isAVLBalanced()).toBe(false);
168
- expect(bst.getHeight()).toBe(2);
169
-
170
- expect(bst.isAVLBalanced()).toBe(false);
171
-
172
- const bfsIDs = bst.BFS();
173
- expect(bfsIDs[0]).toBe(2);
174
- expect(bfsIDs[1]).toBe(12);
175
- expect(bfsIDs[2]).toBe(16);
176
-
177
- const bfsNodes = bst.BFS('node');
178
- expect(bfsNodes[0].id).toBe(2);
179
- expect(bfsNodes[1].id).toBe(12);
180
- expect(bfsNodes[2].id).toBe(16);
181
- });
182
-
183
- it('should perform various operations on a Binary Search Tree with object values', () => {
184
- const objBST = new BST<BSTNode<{id: number; keyA: number}>>();
185
- expect(objBST).toBeInstanceOf(BST);
186
- objBST.add(11, {id: 11, keyA: 11});
187
- objBST.add(3, {id: 3, keyA: 3});
188
- const values = [
189
- {id: 15, keyA: 15},
190
- {id: 1, keyA: 1},
191
- {id: 8, keyA: 8},
192
- {id: 13, keyA: 13},
193
- {id: 16, keyA: 16},
194
- {id: 2, keyA: 2},
195
- {id: 6, keyA: 6},
196
- {id: 9, keyA: 9},
197
- {id: 12, keyA: 12},
198
- {id: 14, keyA: 14},
199
- {id: 4, keyA: 4},
200
- {id: 7, keyA: 7},
201
- {id: 10, keyA: 10},
202
- {id: 5, keyA: 5}
203
- ];
204
-
205
- objBST.addMany(
206
- values.map(item => item.id),
207
- values
208
- );
209
-
210
- expect(objBST.root).toBeInstanceOf(BSTNode);
211
-
212
- if (objBST.root) expect(objBST.root.id).toBe(11);
213
-
214
- expect(objBST.has(6)).toBe(true);
215
-
216
- const node6 = objBST.get(6);
217
- expect(node6 && objBST.getHeight(node6)).toBe(2);
218
- expect(node6 && objBST.getDepth(node6)).toBe(3);
219
-
220
- const nodeId10 = objBST.get(10, 'id');
221
- expect(nodeId10?.id).toBe(10);
222
-
223
- const nodeVal9 = objBST.get(9, 'id');
224
- expect(nodeVal9?.id).toBe(9);
225
-
226
- const leftMost = objBST.getLeftMost();
227
- expect(leftMost?.id).toBe(1);
228
-
229
- const node15 = objBST.get(15);
230
- expect(node15?.val).toEqual({id: 15, keyA: 15});
231
- const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
232
- expect(minNodeBySpecificNode?.id).toBe(12);
233
-
234
- const subTreeSum = node15 && objBST.subTreeSum(node15);
235
- expect(subTreeSum).toBe(70);
236
-
237
- const lesserSum = objBST.lesserSum(10);
238
- expect(lesserSum).toBe(45);
239
-
240
- expect(node15).toBeInstanceOf(BSTNode);
241
-
242
- const node11 = objBST.get(11);
243
- expect(node11).toBeInstanceOf(BSTNode);
244
-
245
- const dfsInorderNodes = objBST.DFS('in', 'node');
246
- expect(dfsInorderNodes[0].id).toBe(1);
247
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
248
-
249
- objBST.perfectlyBalance();
250
- expect(objBST.isPerfectlyBalanced()).toBe(true);
251
-
252
- const bfsNodesAfterBalanced = objBST.BFS('node');
253
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
254
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
255
-
256
- const removed11 = objBST.remove(11);
257
- expect(removed11).toBeInstanceOf(Array);
258
- expect(removed11[0]).toBeDefined();
259
- expect(removed11[0].deleted).toBeDefined();
260
-
261
- if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
262
-
263
- expect(objBST.isAVLBalanced()).toBe(true);
264
-
265
- expect(node15 && objBST.getHeight(node15)).toBe(2);
266
-
267
- const removed1 = objBST.remove(1);
268
- expect(removed1).toBeInstanceOf(Array);
269
- expect(removed1[0]).toBeDefined();
270
- expect(removed1[0].deleted).toBeDefined();
271
- if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
272
-
273
- expect(objBST.isAVLBalanced()).toBe(true);
274
-
275
- expect(objBST.getHeight()).toBe(4);
276
-
277
- const removed4 = objBST.remove(4);
278
- expect(removed4).toBeInstanceOf(Array);
279
- expect(removed4[0]).toBeDefined();
280
- expect(removed4[0].deleted).toBeDefined();
281
- if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
282
- expect(objBST.isAVLBalanced()).toBe(true);
283
- expect(objBST.getHeight()).toBe(4);
284
-
285
- const removed10 = objBST.remove(10);
286
- expect(removed10).toBeInstanceOf(Array);
287
- expect(removed10[0]).toBeDefined();
288
- expect(removed10[0].deleted).toBeDefined();
289
- if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
290
- expect(objBST.isAVLBalanced()).toBe(false);
291
- expect(objBST.getHeight()).toBe(4);
292
-
293
- const removed15 = objBST.remove(15);
294
- expect(removed15).toBeInstanceOf(Array);
295
- expect(removed15[0]).toBeDefined();
296
- expect(removed15[0].deleted).toBeDefined();
297
- if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
298
-
299
- expect(objBST.isAVLBalanced()).toBe(true);
300
- expect(objBST.getHeight()).toBe(3);
301
-
302
- const removed5 = objBST.remove(5);
303
- expect(removed5).toBeInstanceOf(Array);
304
- expect(removed5[0]).toBeDefined();
305
- expect(removed5[0].deleted).toBeDefined();
306
- if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
307
-
308
- expect(objBST.isAVLBalanced()).toBe(true);
309
- expect(objBST.getHeight()).toBe(3);
310
-
311
- const removed13 = objBST.remove(13);
312
- expect(removed13).toBeInstanceOf(Array);
313
- expect(removed13[0]).toBeDefined();
314
- expect(removed13[0].deleted).toBeDefined();
315
- if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
316
- expect(objBST.isAVLBalanced()).toBe(true);
317
- expect(objBST.getHeight()).toBe(3);
318
-
319
- const removed3 = objBST.remove(3);
320
- expect(removed3).toBeInstanceOf(Array);
321
- expect(removed3[0]).toBeDefined();
322
- expect(removed3[0].deleted).toBeDefined();
323
- if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
324
- expect(objBST.isAVLBalanced()).toBe(false);
325
- expect(objBST.getHeight()).toBe(3);
326
-
327
- const removed8 = objBST.remove(8);
328
- expect(removed8).toBeInstanceOf(Array);
329
- expect(removed8[0]).toBeDefined();
330
- expect(removed8[0].deleted).toBeDefined();
331
- if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
332
- expect(objBST.isAVLBalanced()).toBe(true);
333
- expect(objBST.getHeight()).toBe(3);
334
-
335
- const removed6 = objBST.remove(6);
336
- expect(removed6).toBeInstanceOf(Array);
337
- expect(removed6[0]).toBeDefined();
338
- expect(removed6[0].deleted).toBeDefined();
339
- if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
340
- expect(objBST.remove(6).length).toBe(0);
341
- expect(objBST.isAVLBalanced()).toBe(false);
342
- expect(objBST.getHeight()).toBe(3);
343
-
344
- const removed7 = objBST.remove(7);
345
- expect(removed7).toBeInstanceOf(Array);
346
- expect(removed7[0]).toBeDefined();
347
- expect(removed7[0].deleted).toBeDefined();
348
- if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
349
- expect(objBST.isAVLBalanced()).toBe(false);
350
- expect(objBST.getHeight()).toBe(3);
351
-
352
- const removed9 = objBST.remove(9);
353
- expect(removed9).toBeInstanceOf(Array);
354
- expect(removed9[0]).toBeDefined();
355
- expect(removed9[0].deleted).toBeDefined();
356
- if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
357
- expect(objBST.isAVLBalanced()).toBe(false);
358
- expect(objBST.getHeight()).toBe(3);
359
-
360
- const removed14 = objBST.remove(14);
361
- expect(removed14).toBeInstanceOf(Array);
362
- expect(removed14[0]).toBeDefined();
363
- expect(removed14[0].deleted).toBeDefined();
364
- if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
365
- expect(objBST.isAVLBalanced()).toBe(false);
366
- expect(objBST.getHeight()).toBe(2);
367
-
368
- expect(objBST.isAVLBalanced()).toBe(false);
369
-
370
- const bfsIDs = objBST.BFS();
371
- expect(bfsIDs[0]).toBe(2);
372
- expect(bfsIDs[1]).toBe(12);
373
- expect(bfsIDs[2]).toBe(16);
374
-
375
- const bfsNodes = objBST.BFS('node');
376
- expect(bfsNodes[0].id).toBe(2);
377
- expect(bfsNodes[1].id).toBe(12);
378
- expect(bfsNodes[2].id).toBe(16);
379
- });
380
- });
@@ -1,65 +0,0 @@
1
- import {AVLTree, BST, BSTNode} from '../../../../src';
2
-
3
- describe('Overall BinaryTree Test', () => {
4
- it('should perform various operations on BinaryTree', () => {
5
- const bst = new BST();
6
- bst.add(11);
7
- bst.add(3);
8
- bst.addMany([15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5]);
9
- bst.size === 16; // true
10
- expect(bst.size).toBe(16); // true
11
- bst.has(6); // true
12
- expect(bst.has(6)).toBe(true); // true
13
- bst.getHeight(6) === 2; // true
14
- bst.getHeight() === 5; // true
15
- bst.getDepth(6) === 3; // true
16
- expect(bst.getHeight(6)).toBe(2); // true
17
- expect(bst.getHeight()).toBe(5); // true
18
- expect(bst.getDepth(6)).toBe(3); // true
19
- const leftMost = bst.getLeftMost();
20
- leftMost?.id === 1; // true
21
- expect(leftMost?.id).toBe(1);
22
- bst.remove(6);
23
- bst.get(6); // null
24
- expect(bst.get(6)).toBeNull();
25
- bst.isAVLBalanced(); // true or false
26
- expect(bst.isAVLBalanced()).toBe(true);
27
- const bfsIDs = bst.BFS();
28
- bfsIDs[0] === 11; // true
29
- expect(bfsIDs[0]).toBe(11);
30
-
31
- const objBST = new BST<BSTNode<{id: number; keyA: number}>>();
32
- objBST.add(11, {id: 11, keyA: 11});
33
- objBST.add(3, {id: 3, keyA: 3});
34
-
35
- objBST.addMany(
36
- [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5],
37
- [
38
- {id: 15, keyA: 15},
39
- {id: 1, keyA: 1},
40
- {id: 8, keyA: 8},
41
- {id: 13, keyA: 13},
42
- {id: 16, keyA: 16},
43
- {id: 2, keyA: 2},
44
- {id: 6, keyA: 6},
45
- {id: 9, keyA: 9},
46
- {id: 12, keyA: 12},
47
- {id: 14, keyA: 14},
48
- {id: 4, keyA: 4},
49
- {id: 7, keyA: 7},
50
- {id: 10, keyA: 10},
51
- {id: 5, keyA: 5}
52
- ]
53
- );
54
-
55
- objBST.remove(11);
56
-
57
- const avlTree = new AVLTree();
58
- avlTree.addMany([11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5]);
59
- avlTree.isAVLBalanced(); // true
60
- expect(avlTree.isAVLBalanced()).toBe(true); // true
61
- avlTree.remove(10);
62
- avlTree.isAVLBalanced(); // true
63
- expect(avlTree.isAVLBalanced()).toBe(true); // true
64
- });
65
- });
@@ -1,43 +0,0 @@
1
- // import {RBTree, RBTreeNode} from '../../../../src';
2
-
3
- describe('Red-Black Tree Tests', () => {
4
- // let tree: RBTree<RBTreeNode<number>>;
5
- //
6
- // beforeEach(() => {
7
- // tree = new RBTree<RBTreeNode<number>>();
8
- // });
9
-
10
- test('Insertion and In-order Traversal', () => {
11
- // tree.add(5);
12
- // tree.add(3);
13
- // tree.add(7);
14
- // tree.add(2);
15
- // tree.add(4);
16
- // tree.add(6);
17
- // tree.add(8);
18
- //
19
- // const inOrderTraversal: number[] = tree.DFS('in')
20
- //
21
- // expect(inOrderTraversal).toEqual([2, 3, 4, 5, 6, 7, 8]);
22
- });
23
-
24
- test('Deletion', () => {
25
- // tree.add(5);
26
- // tree.add(3);
27
- // tree.add(7);
28
- // tree.add(2);
29
- // tree.add(4);
30
- // tree.add(6);
31
- // tree.add(8);
32
- //
33
- // // Delete a node (e.g., 3) and check if it's gone
34
- // tree.remove(3);
35
- // expect(tree.has(3)).toBe(false);
36
- //
37
- // // Perform in-order traversal to check if the tree is still balanced
38
- // const inOrderTraversal: number[] = tree.DFS('in');
39
- //
40
- //
41
- // expect(inOrderTraversal).toEqual([2, 4, 5, 6, 7, 8]);
42
- });
43
- });
@@ -1,50 +0,0 @@
1
- import {SegmentTree} from '../../../../src';
2
-
3
- describe('SegmentTree', () => {
4
- let segmentTree: SegmentTree;
5
-
6
- beforeEach(() => {
7
- // Create an example SegmentTree for testing
8
- const values = [1, 2, 3, 4, 5];
9
- segmentTree = new SegmentTree(values);
10
- });
11
-
12
- it('should build a valid segment tree', () => {
13
- // Check if the root node's sum is correct
14
- expect(segmentTree.root?.sum).toBe(15);
15
- });
16
-
17
- it('should update a node in the segment tree', () => {
18
- // Update a node value
19
- segmentTree.updateNode(2, 10);
20
-
21
- // Check if the sum of the root node is correct after the update
22
- expect(segmentTree.root?.sum).toBe(22);
23
- });
24
-
25
- it('should query sum by range correctly', () => {
26
- // Check if the sum within a specific range is correct
27
- expect(segmentTree.querySumByRange(1, 3)).toBe(9); // 2 + 3 + 4 = 9
28
- });
29
-
30
- it('should handle edge cases for querySumByRange', () => {
31
- // Check behavior when the range goes beyond boundaries
32
- expect(segmentTree.querySumByRange(0, 4)).toBe(15); // Valid range, should return sum of the specified range
33
- expect(segmentTree.querySumByRange(3, 2)).toBe(NaN); // End index is less than start index, should return NaN
34
- expect(segmentTree.querySumByRange(0, 10)).toBe(NaN); // Beyond upper bound, should return NaN
35
- });
36
-
37
- it('should handle an empty input array', () => {
38
- // Check behavior when dealing with an empty input array
39
- const emptySegmentTree = new SegmentTree([]);
40
- expect(emptySegmentTree.root).toBe(null);
41
- expect(emptySegmentTree.querySumByRange(0, 2)).toBe(0); // Sum of an empty array should be 0
42
- });
43
-
44
- it('should handle a single-element input array', () => {
45
- // Check behavior when the input array contains a single element
46
- const singleElementSegmentTree = new SegmentTree([42]);
47
- expect(singleElementSegmentTree.root?.sum).toBe(42);
48
- expect(singleElementSegmentTree.querySumByRange(0, 0)).toBe(42); // Range covering the only element should return that element's value
49
- });
50
- });