data-structure-typed 1.33.8 → 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 (148) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/package.json +1 -1
  3. package/.prettierrc.js +0 -16
  4. package/coverage/coverage-final.json +0 -68
  5. package/coverage/coverage-summary.json +0 -69
  6. package/docs/.nojekyll +0 -1
  7. package/docs/index.html +0 -877
  8. package/docs/modules.html +0 -336
  9. package/jest.config.js +0 -8
  10. package/src/data-structures/binary-tree/aa-tree.ts +0 -1
  11. package/src/data-structures/binary-tree/abstract-binary-tree.ts +0 -1608
  12. package/src/data-structures/binary-tree/avl-tree.ts +0 -307
  13. package/src/data-structures/binary-tree/b-tree.ts +0 -1
  14. package/src/data-structures/binary-tree/binary-indexed-tree.ts +0 -76
  15. package/src/data-structures/binary-tree/binary-tree.ts +0 -47
  16. package/src/data-structures/binary-tree/bst.ts +0 -537
  17. package/src/data-structures/binary-tree/index.ts +0 -12
  18. package/src/data-structures/binary-tree/rb-tree.ts +0 -366
  19. package/src/data-structures/binary-tree/segment-tree.ts +0 -260
  20. package/src/data-structures/binary-tree/splay-tree.ts +0 -1
  21. package/src/data-structures/binary-tree/tree-multiset.ts +0 -700
  22. package/src/data-structures/binary-tree/two-three-tree.ts +0 -1
  23. package/src/data-structures/graph/abstract-graph.ts +0 -1040
  24. package/src/data-structures/graph/directed-graph.ts +0 -470
  25. package/src/data-structures/graph/index.ts +0 -4
  26. package/src/data-structures/graph/map-graph.ts +0 -129
  27. package/src/data-structures/graph/undirected-graph.ts +0 -274
  28. package/src/data-structures/hash/coordinate-map.ts +0 -67
  29. package/src/data-structures/hash/coordinate-set.ts +0 -56
  30. package/src/data-structures/hash/hash-map.ts +0 -203
  31. package/src/data-structures/hash/hash-table.ts +0 -277
  32. package/src/data-structures/hash/index.ts +0 -7
  33. package/src/data-structures/hash/pair.ts +0 -1
  34. package/src/data-structures/hash/tree-map.ts +0 -1
  35. package/src/data-structures/hash/tree-set.ts +0 -1
  36. package/src/data-structures/heap/heap.ts +0 -212
  37. package/src/data-structures/heap/index.ts +0 -3
  38. package/src/data-structures/heap/max-heap.ts +0 -31
  39. package/src/data-structures/heap/min-heap.ts +0 -32
  40. package/src/data-structures/index.ts +0 -11
  41. package/src/data-structures/linked-list/doubly-linked-list.ts +0 -636
  42. package/src/data-structures/linked-list/index.ts +0 -3
  43. package/src/data-structures/linked-list/singly-linked-list.ts +0 -501
  44. package/src/data-structures/linked-list/skip-linked-list.ts +0 -166
  45. package/src/data-structures/matrix/index.ts +0 -4
  46. package/src/data-structures/matrix/matrix.ts +0 -27
  47. package/src/data-structures/matrix/matrix2d.ts +0 -213
  48. package/src/data-structures/matrix/navigator.ts +0 -121
  49. package/src/data-structures/matrix/vector2d.ts +0 -316
  50. package/src/data-structures/priority-queue/index.ts +0 -3
  51. package/src/data-structures/priority-queue/max-priority-queue.ts +0 -56
  52. package/src/data-structures/priority-queue/min-priority-queue.ts +0 -57
  53. package/src/data-structures/priority-queue/priority-queue.ts +0 -359
  54. package/src/data-structures/queue/deque.ts +0 -297
  55. package/src/data-structures/queue/index.ts +0 -2
  56. package/src/data-structures/queue/queue.ts +0 -191
  57. package/src/data-structures/stack/index.ts +0 -1
  58. package/src/data-structures/stack/stack.ts +0 -98
  59. package/src/data-structures/tree/index.ts +0 -1
  60. package/src/data-structures/tree/tree.ts +0 -69
  61. package/src/data-structures/trie/index.ts +0 -1
  62. package/src/data-structures/trie/trie.ts +0 -225
  63. package/src/index.ts +0 -4
  64. package/src/interfaces/abstract-binary-tree.ts +0 -189
  65. package/src/interfaces/abstract-graph.ts +0 -31
  66. package/src/interfaces/avl-tree.ts +0 -25
  67. package/src/interfaces/binary-tree.ts +0 -6
  68. package/src/interfaces/bst.ts +0 -31
  69. package/src/interfaces/directed-graph.ts +0 -20
  70. package/src/interfaces/doubly-linked-list.ts +0 -1
  71. package/src/interfaces/heap.ts +0 -1
  72. package/src/interfaces/index.ts +0 -15
  73. package/src/interfaces/navigator.ts +0 -1
  74. package/src/interfaces/priority-queue.ts +0 -1
  75. package/src/interfaces/rb-tree.ts +0 -9
  76. package/src/interfaces/segment-tree.ts +0 -1
  77. package/src/interfaces/singly-linked-list.ts +0 -1
  78. package/src/interfaces/tree-multiset.ts +0 -7
  79. package/src/interfaces/undirected-graph.ts +0 -6
  80. package/src/types/data-structures/abstract-binary-tree.ts +0 -50
  81. package/src/types/data-structures/abstract-graph.ts +0 -11
  82. package/src/types/data-structures/avl-tree.ts +0 -5
  83. package/src/types/data-structures/binary-tree.ts +0 -5
  84. package/src/types/data-structures/bst.ts +0 -13
  85. package/src/types/data-structures/directed-graph.ts +0 -8
  86. package/src/types/data-structures/doubly-linked-list.ts +0 -1
  87. package/src/types/data-structures/hash.ts +0 -1
  88. package/src/types/data-structures/heap.ts +0 -5
  89. package/src/types/data-structures/index.ts +0 -16
  90. package/src/types/data-structures/map-graph.ts +0 -1
  91. package/src/types/data-structures/navigator.ts +0 -13
  92. package/src/types/data-structures/priority-queue.ts +0 -9
  93. package/src/types/data-structures/rb-tree.ts +0 -8
  94. package/src/types/data-structures/segment-tree.ts +0 -1
  95. package/src/types/data-structures/singly-linked-list.ts +0 -1
  96. package/src/types/data-structures/tree-multiset.ts +0 -6
  97. package/src/types/helpers.ts +0 -1
  98. package/src/types/index.ts +0 -3
  99. package/src/types/utils/index.ts +0 -2
  100. package/src/types/utils/utils.ts +0 -6
  101. package/src/types/utils/validate-type.ts +0 -35
  102. package/src/utils/index.ts +0 -1
  103. package/src/utils/utils.ts +0 -79
  104. package/test/integration/avl-tree.test.ts +0 -108
  105. package/test/integration/bst.test.ts +0 -380
  106. package/test/integration/heap.test.js +0 -16
  107. package/test/integration/index.html +0 -52
  108. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -108
  109. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -142
  110. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -380
  111. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -65
  112. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +0 -43
  113. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -50
  114. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +0 -461
  115. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -5
  116. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -519
  117. package/test/unit/data-structures/graph/index.ts +0 -2
  118. package/test/unit/data-structures/graph/map-graph.test.ts +0 -45
  119. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  120. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -59
  121. package/test/unit/data-structures/hash/coordinate-map.test.ts +0 -54
  122. package/test/unit/data-structures/hash/coordinate-set.test.ts +0 -41
  123. package/test/unit/data-structures/hash/hash-map.test.ts +0 -104
  124. package/test/unit/data-structures/hash/hash-table.test.ts +0 -184
  125. package/test/unit/data-structures/heap/heap.test.ts +0 -55
  126. package/test/unit/data-structures/heap/max-heap.test.ts +0 -44
  127. package/test/unit/data-structures/heap/min-heap.test.ts +0 -82
  128. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -364
  129. package/test/unit/data-structures/linked-list/index.ts +0 -4
  130. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -35
  131. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -451
  132. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  133. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -55
  134. package/test/unit/data-structures/matrix/matrix.test.ts +0 -54
  135. package/test/unit/data-structures/matrix/matrix2d.test.ts +0 -138
  136. package/test/unit/data-structures/matrix/navigator.test.ts +0 -79
  137. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -106
  138. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -105
  139. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -27
  140. package/test/unit/data-structures/queue/deque.test.ts +0 -130
  141. package/test/unit/data-structures/queue/queue.test.ts +0 -199
  142. package/test/unit/data-structures/stack/stack.test.ts +0 -67
  143. package/test/unit/data-structures/tree/tree.test.ts +0 -39
  144. package/test/unit/data-structures/trie/trie.test.ts +0 -95
  145. package/test/utils/index.ts +0 -2
  146. package/test/utils/magnitude.ts +0 -21
  147. package/test/utils/number.ts +0 -3
  148. package/tsconfig.json +0 -29
@@ -1,380 +0,0 @@
1
- import {BST, BSTNode} from 'bst-typed';
2
-
3
- describe('Individual package 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 idsOrVals = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
10
- bst.addMany(idsOrVals, idsOrVals);
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,16 +0,0 @@
1
- const {MinHeap} = require('heap-typed');
2
-
3
- describe('JS Heap Operation Test', () => {
4
- it('should numeric heap work well', function () {
5
- const minNumHeap = new MinHeap();
6
- minNumHeap.add(1).add(6).add(2).add(0).add(5).add(9);
7
- expect(minNumHeap.poll()).toBe(0);
8
- expect(minNumHeap.poll()).toBe(1);
9
- expect(minNumHeap.peek()).toBe(2);
10
- expect(minNumHeap.toArray().length).toBe(4);
11
- expect(minNumHeap.toArray()[0]).toBe(2);
12
- expect(minNumHeap.toArray()[1]).toBe(5);
13
- expect(minNumHeap.toArray()[2]).toBe(9);
14
- expect(minNumHeap.toArray()[3]).toBe(6);
15
- });
16
- });
@@ -1,52 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang='en'>
3
- <head>
4
- <meta charset='UTF-8'>
5
- <title>CDN Test</title>
6
- <script src='https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js'></script>
7
- </head>
8
- <body>
9
- <div id='app'>
10
- <ul class='modules'>
11
-
12
- </ul>
13
- </div>
14
- <script defer>
15
- const $modules = document.querySelector('.modules');
16
-
17
-
18
- try {
19
- const {AVLTree, Queue} = window.dataStructureTyped;
20
- const avlTree = new AVLTree();
21
- const $avlTree = document.createElement('li');
22
- const $avlTreeSpan = document.createElement('span');
23
- $avlTreeSpan.innerText = 'AVLTree';
24
- $avlTree.append($avlTreeSpan);
25
- avlTree.add(1, 1);
26
- console.log(avlTree.BFS());
27
- $modules.append($avlTree);
28
-
29
-
30
- const queue = new Queue();
31
- for (let i = 0; i < 1000000; i++) {
32
- queue.enqueue(i);
33
- }
34
- let last = 0;
35
- const startTime = performance.now();
36
-
37
- for (let i = 0; i < 1000000; i++) {
38
- last = queue.dequeue();
39
- }
40
-
41
- console.log(performance.now() - startTime);
42
-
43
- }
44
- catch (e) {
45
- console.error(e);
46
- }
47
-
48
- </script>
49
-
50
- </body>
51
- </html>
52
-
@@ -1,108 +0,0 @@
1
- import {AVLTree} from '../../../../src';
2
-
3
- describe('AVL Tree Test', () => {
4
- it('should perform various operations on a AVL Tree', () => {
5
- const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
6
- const tree = new AVLTree();
7
-
8
- for (const i of arr) tree.add(i, i);
9
-
10
- const node6 = tree.get(6);
11
-
12
- expect(node6 && tree.getHeight(node6)).toBe(3);
13
- expect(node6 && tree.getDepth(node6)).toBe(1);
14
-
15
- const getNodeById = tree.get(10, 'id');
16
- expect(getNodeById?.id).toBe(10);
17
-
18
- const getMinNodeByRoot = tree.getLeftMost();
19
- expect(getMinNodeByRoot?.id).toBe(1);
20
-
21
- const node15 = tree.get(15);
22
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
23
- expect(getMinNodeBySpecificNode?.id).toBe(12);
24
-
25
- const subTreeSum = node15 && tree.subTreeSum(node15);
26
- expect(subTreeSum).toBe(70);
27
-
28
- const lesserSum = tree.lesserSum(10);
29
- expect(lesserSum).toBe(45);
30
-
31
- // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
32
- expect(node15?.val).toBe(15);
33
-
34
- const dfs = tree.DFS('in', 'node');
35
- expect(dfs[0].id).toBe(1);
36
- expect(dfs[dfs.length - 1].id).toBe(16);
37
-
38
- tree.perfectlyBalance();
39
- const bfs = tree.BFS('node');
40
- expect(tree.isPerfectlyBalanced()).toBe(true);
41
- expect(bfs[0].id).toBe(8);
42
- expect(bfs[bfs.length - 1].id).toBe(16);
43
-
44
- expect(tree.remove(11)[0].deleted?.id).toBe(11);
45
- expect(tree.isAVLBalanced()).toBe(true);
46
- expect(node15 && tree.getHeight(node15)).toBe(2);
47
-
48
- expect(tree.remove(1)[0].deleted?.id).toBe(1);
49
- expect(tree.isAVLBalanced()).toBe(true);
50
- expect(tree.getHeight()).toBe(4);
51
-
52
- expect(tree.remove(4)[0].deleted?.id).toBe(4);
53
- expect(tree.isAVLBalanced()).toBe(true);
54
- expect(tree.getHeight()).toBe(4);
55
-
56
- expect(tree.remove(10)[0].deleted?.id).toBe(10);
57
- expect(tree.isAVLBalanced()).toBe(true);
58
- expect(tree.getHeight()).toBe(3);
59
-
60
- expect(tree.remove(15)[0].deleted?.id).toBe(15);
61
- expect(tree.isAVLBalanced()).toBe(true);
62
-
63
- expect(tree.getHeight()).toBe(3);
64
-
65
- expect(tree.remove(5)[0].deleted?.id).toBe(5);
66
- expect(tree.isAVLBalanced()).toBe(true);
67
- expect(tree.getHeight()).toBe(3);
68
-
69
- expect(tree.remove(13)[0].deleted?.id).toBe(13);
70
- expect(tree.isAVLBalanced()).toBe(true);
71
- expect(tree.getHeight()).toBe(3);
72
-
73
- expect(tree.remove(3)[0].deleted?.id).toBe(3);
74
- expect(tree.isAVLBalanced()).toBe(true);
75
- expect(tree.getHeight()).toBe(3);
76
-
77
- expect(tree.remove(8)[0].deleted?.id).toBe(8);
78
- expect(tree.isAVLBalanced()).toBe(true);
79
- expect(tree.getHeight()).toBe(3);
80
-
81
- expect(tree.remove(6)[0].deleted?.id).toBe(6);
82
- expect(tree.remove(6).length).toBe(0);
83
- expect(tree.isAVLBalanced()).toBe(true);
84
- expect(tree.getHeight()).toBe(2);
85
-
86
- expect(tree.remove(7)[0].deleted?.id).toBe(7);
87
- expect(tree.isAVLBalanced()).toBe(true);
88
- expect(tree.getHeight()).toBe(2);
89
-
90
- expect(tree.remove(9)[0].deleted?.id).toBe(9);
91
- expect(tree.isAVLBalanced()).toBe(true);
92
- expect(tree.getHeight()).toBe(2);
93
- expect(tree.remove(14)[0].deleted?.id).toBe(14);
94
- expect(tree.isAVLBalanced()).toBe(true);
95
- expect(tree.getHeight()).toBe(1);
96
-
97
- expect(tree.isAVLBalanced()).toBe(true);
98
- const lastBFSIds = tree.BFS();
99
- expect(lastBFSIds[0]).toBe(12);
100
- expect(lastBFSIds[1]).toBe(2);
101
- expect(lastBFSIds[2]).toBe(16);
102
-
103
- const lastBFSNodes = tree.BFS('node');
104
- expect(lastBFSNodes[0].id).toBe(12);
105
- expect(lastBFSNodes[1].id).toBe(2);
106
- expect(lastBFSNodes[2].id).toBe(16);
107
- });
108
- });
@@ -1,142 +0,0 @@
1
- import {BinaryTreeNode} from '../../../../src';
2
- import {BinaryTree} from 'binary-tree-typed';
3
-
4
- describe('BinaryTreeNode', () => {
5
- it('should create an instance of BinaryTreeNode', () => {
6
- const node = new BinaryTreeNode<number>(1);
7
- expect(node).toBeInstanceOf(BinaryTreeNode);
8
- });
9
-
10
- it('should set and get the ID correctly', () => {
11
- const node = new BinaryTreeNode<number>(1);
12
- expect(node.id).toBe(1);
13
-
14
- node.id = 2;
15
- expect(node.id).toBe(2);
16
- });
17
-
18
- it('should set and get the value correctly', () => {
19
- const node = new BinaryTreeNode<number>(1, 42);
20
- expect(node.val).toBe(42);
21
-
22
- node.val = 55;
23
- expect(node.val).toBe(55);
24
- });
25
-
26
- it('should set and get the left child correctly', () => {
27
- const node1 = new BinaryTreeNode<number>(1);
28
- const node2 = new BinaryTreeNode<number>(2);
29
-
30
- node1.left = node2;
31
-
32
- expect(node1.left).toBe(node2);
33
- expect(node2.parent).toBe(node1);
34
- });
35
-
36
- it('should set and get the right child correctly', () => {
37
- const node1 = new BinaryTreeNode<number>(1);
38
- const node2 = new BinaryTreeNode<number>(2);
39
-
40
- node1.right = node2;
41
-
42
- expect(node1.right).toBe(node2);
43
- expect(node2.parent).toBe(node1);
44
- });
45
-
46
- it('should set and get the parent correctly', () => {
47
- const node1 = new BinaryTreeNode<number>(1);
48
- const node2 = new BinaryTreeNode<number>(2);
49
-
50
- node1.left = node2;
51
-
52
- expect(node2.parent).toBe(node1);
53
- expect(node1.left).toBe(node2);
54
- });
55
-
56
- it('should set and get the height correctly', () => {
57
- const node = new BinaryTreeNode<number>(1);
58
- expect(node.height).toBe(0);
59
-
60
- node.height = 3;
61
- expect(node.height).toBe(3);
62
- });
63
-
64
- it('should determine family position correctly', () => {
65
- const root = new BinaryTreeNode<number>(1);
66
- const leftChild = new BinaryTreeNode<number>(2);
67
- const rightChild = new BinaryTreeNode<number>(3);
68
-
69
- root.left = leftChild;
70
- root.right = rightChild;
71
-
72
- expect(leftChild.familyPosition).toBe('LEFT');
73
- expect(rightChild.familyPosition).toBe('RIGHT');
74
- expect(root.familyPosition).toBe('ROOT');
75
- });
76
- });
77
-
78
- describe('BinaryTree', () => {
79
- let binaryTree: BinaryTree;
80
-
81
- beforeEach(() => {
82
- binaryTree = new BinaryTree();
83
- });
84
-
85
- afterEach(() => {
86
- binaryTree.clear();
87
- });
88
-
89
- test('should add a node', () => {
90
- const node = binaryTree.add(1);
91
- expect(node).not.toBeNull();
92
- expect(binaryTree.size).toBe(1);
93
- });
94
-
95
- test('should remove a node', () => {
96
- const node = binaryTree.add(1);
97
- expect(binaryTree.size).toBe(1);
98
-
99
- if (node) {
100
- const result = binaryTree.remove(node);
101
- expect(result).toHaveLength(1);
102
- expect(binaryTree.size).toBe(0);
103
- }
104
- });
105
-
106
- test('should add and find nodes', () => {
107
- binaryTree.add(1);
108
- binaryTree.add(2);
109
- binaryTree.add(3);
110
-
111
- expect(binaryTree.has(1)).toBe(true);
112
- expect(binaryTree.has(2)).toBe(true);
113
- expect(binaryTree.has(3)).toBe(true);
114
- expect(binaryTree.has(4)).toBe(false);
115
- });
116
-
117
- test('should traverse in-order', () => {
118
- binaryTree.add(4);
119
- binaryTree.add(2);
120
- binaryTree.add(6);
121
- binaryTree.add(1);
122
- binaryTree.add(3);
123
- binaryTree.add(5);
124
- binaryTree.add(7);
125
-
126
- const inOrder = binaryTree.DFS('in');
127
-
128
- expect(inOrder).toEqual([1, 2, 3, 4, 5, 6, 7]);
129
- });
130
-
131
- test('should clear the tree', () => {
132
- binaryTree.add(1);
133
- binaryTree.add(2);
134
-
135
- expect(binaryTree.size).toBe(2);
136
-
137
- binaryTree.clear();
138
-
139
- expect(binaryTree.size).toBe(0);
140
- expect(binaryTree.root).toBeNull();
141
- });
142
- });