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,461 +0,0 @@
1
- import {TreeMultiset, TreeMultisetNode} from '../../../../src';
2
-
3
- describe('TreeMultiset operations test', () => {
4
- it('should perform various operations on a Binary Search Tree with numeric values', () => {
5
- const treeMultiset = new TreeMultiset();
6
-
7
- expect(treeMultiset instanceof TreeMultiset);
8
- treeMultiset.add(11, 11);
9
- treeMultiset.add(3, 3);
10
- const idAndValues = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
11
- treeMultiset.addMany(idAndValues, idAndValues);
12
- expect(treeMultiset.root instanceof TreeMultisetNode);
13
-
14
- if (treeMultiset.root) expect(treeMultiset.root.id == 11);
15
-
16
- expect(treeMultiset.size).toBe(16);
17
- expect(treeMultiset.count).toBe(18);
18
- expect(treeMultiset.BFS('id'));
19
-
20
- expect(treeMultiset.has(6));
21
-
22
- expect(treeMultiset.getHeight(6)).toBe(3);
23
- expect(treeMultiset.getDepth(6)).toBe(1);
24
- const nodeId10 = treeMultiset.get(10);
25
- expect(nodeId10?.id).toBe(10);
26
-
27
- const nodeVal9 = treeMultiset.get(9, 'val');
28
- expect(nodeVal9?.id).toBe(9);
29
-
30
- const nodesByCount1 = treeMultiset.getNodesByCount(1);
31
- expect(nodesByCount1.length).toBe(14);
32
-
33
- const nodesByCount2 = treeMultiset.getNodesByCount(2);
34
- expect(nodesByCount2.length).toBe(2);
35
- const leftMost = treeMultiset.getLeftMost();
36
- expect(leftMost?.id).toBe(1);
37
-
38
- const node15 = treeMultiset.get(15);
39
- const minNodeBySpecificNode = node15 && treeMultiset.getLeftMost(node15);
40
- expect(minNodeBySpecificNode?.id).toBe(12);
41
-
42
- const subTreeSum = node15 && treeMultiset.subTreeSum(15);
43
- expect(subTreeSum).toBe(70);
44
- const lesserSum = treeMultiset.lesserSum(10);
45
- expect(lesserSum).toBe(45);
46
-
47
- expect(node15 instanceof TreeMultisetNode);
48
- if (node15 instanceof TreeMultisetNode) {
49
- const subTreeAdd = treeMultiset.subTreeAddCount(15, 1);
50
- expect(subTreeAdd);
51
- }
52
- const node11 = treeMultiset.get(11);
53
- expect(node11 instanceof TreeMultisetNode);
54
- if (node11 instanceof TreeMultisetNode) {
55
- const allGreaterNodesAdded = treeMultiset.allGreaterNodesAddCount(11, 2);
56
- expect(allGreaterNodesAdded);
57
- }
58
-
59
- const dfsInorderNodes = treeMultiset.DFS('in', 'node');
60
- expect(dfsInorderNodes[0].id).toBe(1);
61
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
62
- expect(treeMultiset.isPerfectlyBalanced()).toBe(false);
63
-
64
- treeMultiset.perfectlyBalance();
65
-
66
- expect(treeMultiset.isPerfectlyBalanced()).toBe(true);
67
- expect(treeMultiset.isAVLBalanced()).toBe(true);
68
-
69
- const bfsNodesAfterBalanced = treeMultiset.BFS('node');
70
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
71
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
72
-
73
- const removed11 = treeMultiset.remove(11, true);
74
- expect(removed11 instanceof Array);
75
- expect(removed11[0]);
76
- expect(removed11[0].deleted);
77
-
78
- if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
79
-
80
- expect(treeMultiset.isAVLBalanced()).toBe(true);
81
-
82
- expect(treeMultiset.getHeight(15)).toBe(1);
83
-
84
- const removed1 = treeMultiset.remove(1, true);
85
- expect(removed1 instanceof Array);
86
- expect(removed1[0]);
87
- expect(removed1[0].deleted);
88
- if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
89
-
90
- expect(treeMultiset.isAVLBalanced()).toBe(true);
91
-
92
- expect(treeMultiset.getHeight()).toBe(4);
93
-
94
- const removed4 = treeMultiset.remove(4, true);
95
- expect(removed4 instanceof Array);
96
- expect(removed4[0]);
97
- expect(removed4[0].deleted);
98
- if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
99
-
100
- expect(treeMultiset.isAVLBalanced()).toBe(true);
101
- expect(treeMultiset.getHeight()).toBe(4);
102
-
103
- const removed10 = treeMultiset.remove(10, true);
104
- expect(removed10 instanceof Array);
105
- expect(removed10[0]);
106
- expect(removed10[0].deleted);
107
- if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
108
- expect(treeMultiset.isAVLBalanced()).toBe(true);
109
-
110
- expect(treeMultiset.getHeight()).toBe(3);
111
-
112
- const removed15 = treeMultiset.remove(15, true);
113
- expect(removed15 instanceof Array);
114
- expect(removed15[0]);
115
- expect(removed15[0].deleted);
116
- if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
117
-
118
- expect(treeMultiset.isAVLBalanced()).toBe(true);
119
- expect(treeMultiset.getHeight()).toBe(3);
120
-
121
- const removed5 = treeMultiset.remove(5, true);
122
- expect(removed5 instanceof Array);
123
- expect(removed5[0]);
124
- expect(removed5[0].deleted);
125
- if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
126
-
127
- expect(treeMultiset.isAVLBalanced()).toBe(true);
128
- expect(treeMultiset.getHeight()).toBe(3);
129
-
130
- const removed13 = treeMultiset.remove(13, true);
131
- expect(removed13 instanceof Array);
132
- expect(removed13[0]);
133
- expect(removed13[0].deleted);
134
- if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
135
- expect(treeMultiset.isAVLBalanced()).toBe(true);
136
- expect(treeMultiset.getHeight()).toBe(3);
137
-
138
- const removed3 = treeMultiset.remove(3, true);
139
- expect(removed3 instanceof Array);
140
- expect(removed3[0]);
141
- expect(removed3[0].deleted);
142
- if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
143
- expect(treeMultiset.isAVLBalanced()).toBe(true);
144
- expect(treeMultiset.getHeight()).toBe(3);
145
-
146
- const removed8 = treeMultiset.remove(8, true);
147
- expect(removed8 instanceof Array);
148
- expect(removed8[0]);
149
- expect(removed8[0].deleted);
150
- if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
151
- expect(treeMultiset.isAVLBalanced()).toBe(true);
152
- expect(treeMultiset.getHeight()).toBe(3);
153
-
154
- const removed6 = treeMultiset.remove(6, true);
155
- expect(removed6 instanceof Array);
156
- expect(removed6[0]);
157
- expect(removed6[0].deleted);
158
- if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
159
- expect(treeMultiset.remove(6, true).length).toBe(0);
160
- expect(treeMultiset.isAVLBalanced()).toBe(true);
161
-
162
- expect(treeMultiset.getHeight()).toBe(2);
163
-
164
- const removed7 = treeMultiset.remove(7, true);
165
- expect(removed7 instanceof Array);
166
- expect(removed7[0]);
167
- expect(removed7[0].deleted);
168
- if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
169
- expect(treeMultiset.isAVLBalanced()).toBe(true);
170
- expect(treeMultiset.getHeight()).toBe(2);
171
-
172
- const removed9 = treeMultiset.remove(9, true);
173
- expect(removed9 instanceof Array);
174
- expect(removed9[0]);
175
- expect(removed9[0].deleted);
176
- if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
177
- expect(treeMultiset.isAVLBalanced()).toBe(true);
178
- expect(treeMultiset.getHeight()).toBe(2);
179
-
180
- const removed14 = treeMultiset.remove(14, true);
181
- expect(removed14 instanceof Array);
182
- expect(removed14[0]);
183
- expect(removed14[0].deleted);
184
- if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
185
- expect(treeMultiset.isAVLBalanced()).toBe(true);
186
- expect(treeMultiset.getHeight()).toBe(1);
187
-
188
- expect(treeMultiset.isAVLBalanced()).toBe(true);
189
-
190
- const bfsIDs = treeMultiset.BFS();
191
-
192
- expect(bfsIDs[0]).toBe(12);
193
- expect(bfsIDs[1]).toBe(2);
194
- expect(bfsIDs[2]).toBe(16);
195
-
196
- const bfsNodes = treeMultiset.BFS('node');
197
-
198
- expect(bfsNodes[0].id).toBe(12);
199
- expect(bfsNodes[1].id).toBe(2);
200
- expect(bfsNodes[2].id).toBe(16);
201
-
202
- expect(treeMultiset.count).toBe(9);
203
- });
204
-
205
- it('should perform various operations on a Binary Search Tree with object values', () => {
206
- const objTreeMultiset = new TreeMultiset<TreeMultisetNode<{id: number; keyA: number}>>();
207
- expect(objTreeMultiset).toBeInstanceOf(TreeMultiset);
208
- objTreeMultiset.add(11, {id: 11, keyA: 11});
209
- objTreeMultiset.add(3, {id: 3, keyA: 3});
210
- const values = [
211
- {id: 15, keyA: 15},
212
- {id: 1, keyA: 1},
213
- {id: 8, keyA: 8},
214
- {id: 13, keyA: 13},
215
- {id: 16, keyA: 16},
216
- {id: 2, keyA: 2},
217
- {id: 6, keyA: 6},
218
- {id: 9, keyA: 9},
219
- {id: 12, keyA: 12},
220
- {id: 14, keyA: 14},
221
- {id: 4, keyA: 4},
222
- {id: 7, keyA: 7},
223
- {id: 10, keyA: 10},
224
- {id: 5, keyA: 5}
225
- ];
226
-
227
- objTreeMultiset.addMany(
228
- values.map(item => item.id),
229
- values
230
- );
231
-
232
- expect(objTreeMultiset.root).toBeInstanceOf(TreeMultisetNode);
233
-
234
- if (objTreeMultiset.root) expect(objTreeMultiset.root.id).toBe(11);
235
-
236
- expect(objTreeMultiset.count).toBe(16);
237
-
238
- expect(objTreeMultiset.has(6)).toBe(true);
239
-
240
- // const node6 = objTreeMultiset.get(6);
241
- // expect(node6 && objTreeMultiset.getHeight(node6)).toBe(2);
242
- // expect(node6 && objTreeMultiset.getDepth(node6)).toBe(3);
243
- //
244
- // const nodeId10 = objTreeMultiset.get(10, 'id');
245
- // expect(nodeId10?.id).toBe(10);
246
- //
247
- // const nodeVal9 = objTreeMultiset.get(9, 'id');
248
- // expect(nodeVal9?.id).toBe(9);
249
- //
250
- // const nodesByCount1 = objTreeMultiset.getNodesByCount(1);
251
- // expect(nodesByCount1.length).toBe(16);
252
- //
253
- // const leftMost = objTreeMultiset.getLeftMost();
254
- // expect(leftMost?.id).toBe(1);
255
- //
256
- // const node15 = objTreeMultiset.get(15);
257
- // expect(node15?.val).toEqual({id: 15, keyA: 15});
258
- // const minNodeBySpecificNode = node15 && objTreeMultiset.getLeftMost(node15);
259
- // expect(minNodeBySpecificNode?.id).toBe(12);
260
- //
261
- // const subTreeSum = node15 && objTreeMultiset.subTreeSum(node15);
262
- // expect(subTreeSum).toBe(70);
263
- //
264
- // const lesserSum = objTreeMultiset.lesserSum(10);
265
- // expect(lesserSum).toBe(45);
266
- //
267
- // expect(node15).toBeInstanceOf(TreeMultisetNode);
268
- // if (node15 instanceof TreeMultisetNode) {
269
- // const subTreeAdd = objTreeMultiset.subTreeAddCount(node15, 1);
270
- // expect(subTreeAdd).toBeDefined();
271
- // }
272
- //
273
- // const node11 = objTreeMultiset.get(11);
274
- // expect(node11).toBeInstanceOf(TreeMultisetNode);
275
- // if (node11 instanceof TreeMultisetNode) {
276
- // const allGreaterNodesAdded = objTreeMultiset.allGreaterNodesAddCount(node11, 2);
277
- // expect(allGreaterNodesAdded).toBeDefined();
278
- // }
279
- //
280
- // const dfsInorderNodes = objTreeMultiset.DFS('in', 'node');
281
- // expect(dfsInorderNodes[0].id).toBe(1);
282
- // expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
283
- //
284
- // objTreeMultiset.perfectlyBalance();
285
- // expect(objTreeMultiset.isPerfectlyBalanced()).toBe(true);
286
- //
287
- // const bfsNodesAfterBalanced = objTreeMultiset.BFS('node');
288
- // expect(bfsNodesAfterBalanced[0].id).toBe(8);
289
- // expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
290
- //
291
- // const removed11 = objTreeMultiset.remove(11, true);
292
- // expect(removed11).toBeInstanceOf(Array);
293
- // expect(removed11[0]).toBeDefined();
294
- // expect(removed11[0].deleted).toBeDefined();
295
- //
296
- // if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
297
- //
298
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
299
- //
300
- // expect(node15 && objTreeMultiset.getHeight(node15)).toBe(2);
301
- //
302
- // const removed1 = objTreeMultiset.remove(1, true);
303
- // expect(removed1).toBeInstanceOf(Array);
304
- // expect(removed1[0]).toBeDefined();
305
- // expect(removed1[0].deleted).toBeDefined();
306
- // if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
307
- //
308
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
309
- //
310
- // expect(objTreeMultiset.getHeight()).toBe(4);
311
- //
312
- // const removed4 = objTreeMultiset.remove(4, true);
313
- // expect(removed4).toBeInstanceOf(Array);
314
- // expect(removed4[0]).toBeDefined();
315
- // expect(removed4[0].deleted).toBeDefined();
316
- // if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
317
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
318
- // expect(objTreeMultiset.getHeight()).toBe(4);
319
- //
320
- // const removed10 = objTreeMultiset.remove(10, true);
321
- // expect(removed10).toBeInstanceOf(Array);
322
- // expect(removed10[0]).toBeDefined();
323
- // expect(removed10[0].deleted).toBeDefined();
324
- // if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
325
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
326
- // expect(objTreeMultiset.getHeight()).toBe(4);
327
- //
328
- // const removed15 = objTreeMultiset.remove(15, true);
329
- // expect(removed15).toBeInstanceOf(Array);
330
- // expect(removed15[0]).toBeDefined();
331
- // expect(removed15[0].deleted).toBeDefined();
332
- // if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
333
- //
334
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
335
- // expect(objTreeMultiset.getHeight()).toBe(3);
336
- //
337
- // const removed5 = objTreeMultiset.remove(5, true);
338
- // expect(removed5).toBeInstanceOf(Array);
339
- // expect(removed5[0]).toBeDefined();
340
- // expect(removed5[0].deleted).toBeDefined();
341
- // if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
342
- //
343
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
344
- // expect(objTreeMultiset.getHeight()).toBe(3);
345
- //
346
- // const removed13 = objTreeMultiset.remove(13, true);
347
- // expect(removed13).toBeInstanceOf(Array);
348
- // expect(removed13[0]).toBeDefined();
349
- // expect(removed13[0].deleted).toBeDefined();
350
- // if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
351
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
352
- // expect(objTreeMultiset.getHeight()).toBe(3);
353
- //
354
- // const removed3 = objTreeMultiset.remove(3, true);
355
- // expect(removed3).toBeInstanceOf(Array);
356
- // expect(removed3[0]).toBeDefined();
357
- // expect(removed3[0].deleted).toBeDefined();
358
- // if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
359
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
360
- // expect(objTreeMultiset.getHeight()).toBe(3);
361
- //
362
- // const removed8 = objTreeMultiset.remove(8, true);
363
- // expect(removed8).toBeInstanceOf(Array);
364
- // expect(removed8[0]).toBeDefined();
365
- // expect(removed8[0].deleted).toBeDefined();
366
- // if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
367
- // expect(objTreeMultiset.isAVLBalanced()).toBe(true);
368
- // expect(objTreeMultiset.getHeight()).toBe(3);
369
- //
370
- // const removed6 = objTreeMultiset.remove(6, true);
371
- // expect(removed6).toBeInstanceOf(Array);
372
- // expect(removed6[0]).toBeDefined();
373
- // expect(removed6[0].deleted).toBeDefined();
374
- // if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
375
- // expect(objTreeMultiset.remove(6, true).length).toBe(0);
376
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
377
- // expect(objTreeMultiset.getHeight()).toBe(3);
378
- //
379
- // const removed7 = objTreeMultiset.remove(7, true);
380
- // expect(removed7).toBeInstanceOf(Array);
381
- // expect(removed7[0]).toBeDefined();
382
- // expect(removed7[0].deleted).toBeDefined();
383
- // if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
384
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
385
- // expect(objTreeMultiset.getHeight()).toBe(3);
386
- //
387
- // const removed9 = objTreeMultiset.remove(9, true);
388
- // expect(removed9).toBeInstanceOf(Array);
389
- // expect(removed9[0]).toBeDefined();
390
- // expect(removed9[0].deleted).toBeDefined();
391
- // if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
392
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
393
- // expect(objTreeMultiset.getHeight()).toBe(3);
394
- //
395
- // const removed14 = objTreeMultiset.remove(14, true);
396
- // expect(removed14).toBeInstanceOf(Array);
397
- // expect(removed14[0]).toBeDefined();
398
- // expect(removed14[0].deleted).toBeDefined();
399
- // if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
400
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
401
- // expect(objTreeMultiset.getHeight()).toBe(2);
402
- //
403
- //
404
- // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
405
- //
406
- // const bfsIDs = objTreeMultiset.BFS();
407
- // expect(bfsIDs[0]).toBe(2);
408
- // expect(bfsIDs[1]).toBe(12);
409
- // expect(bfsIDs[2]).toBe(16);
410
- //
411
- // const bfsNodes = objTreeMultiset.BFS('node');
412
- // expect(bfsNodes[0].id).toBe(2);
413
- // expect(bfsNodes[1].id).toBe(12);
414
- // expect(bfsNodes[2].id).toBe(16);
415
- //
416
- // expect(objTreeMultiset.count).toBe(5);
417
- });
418
- });
419
-
420
- describe('TreeMultiset Performance test', function () {
421
- // const treeMS = new TreeMultiset<TreeMultisetNode<number>>();
422
- // const inputSizes = [100]; // Adjust input sizes as needed
423
- //
424
- // // Define a function to calculate the expected O(n log n) time
425
- // function expectedTime(n: number): number {
426
- // return n * Math.log(n);
427
- // }
428
-
429
- it(`Observe the time consumption of TreeMultiset.add fitting O(n log n)`, function () {
430
- // // Create a benchmark suite
431
- // const suite = new Benchmark.Suite();
432
- // // Define a function to generate a random array of a given size
433
- // function generateRandomArray(size: number): number[] {
434
- // const arr: number[] = [];
435
- // for (let i = 0; i < size; i++) {
436
- // arr.push(Math.floor(Math.random() * size));
437
- // }
438
- // return arr;
439
- // }
440
- // const inputArray = generateRandomArray(inputSizes[0]);
441
- //
442
- // suite.add(`TreeMultiset addMany (n=${inputSizes[0]})`, () => {
443
- // treeMS.addMany([...inputArray]);
444
- // });
445
- //
446
- // // Run the benchmarks
447
- // suite
448
- // .on('cycle', (event: any) => {
449
- // const benchmark = event.target;
450
- // const n = parseInt(benchmark.name.split('=')[1]);
451
- // const observedTime = benchmark.times.elapsed;
452
- // const expected = expectedTime(n);
453
- // console.log(`Input size (n): ${n}, Observed time: ${observedTime.toFixed(2)}ms, Expected time: ${expected.toFixed(2)}ms`);
454
- // })
455
- // .on('complete', () => {
456
- // console.log(`Benchmark (n=${inputSizes[0]}) completed.`);
457
- // done(); // Call done to indicate the test is complete
458
- // })
459
- // .run({async: true});
460
- });
461
- });
@@ -1,5 +0,0 @@
1
- describe('AbstractGraph Operation Test', () => {
2
- it('should xxx', function () {
3
- expect(true).toBe(true);
4
- });
5
- });