data-structure-typed 1.50.6 → 1.50.7

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 (39) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +13 -18
  3. package/benchmark/report.html +13 -13
  4. package/benchmark/report.json +155 -155
  5. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -0
  6. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +3 -0
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js +13 -9
  10. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/bst.js +17 -17
  12. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +2 -8
  14. package/dist/cjs/data-structures/binary-tree/rb-tree.js +7 -16
  15. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  16. package/dist/cjs/types/common.d.ts +6 -0
  17. package/dist/cjs/types/common.js +8 -1
  18. package/dist/cjs/types/common.js.map +1 -1
  19. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -0
  20. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +3 -0
  21. package/dist/mjs/data-structures/binary-tree/binary-tree.js +13 -9
  22. package/dist/mjs/data-structures/binary-tree/bst.js +17 -17
  23. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +2 -8
  24. package/dist/mjs/data-structures/binary-tree/rb-tree.js +8 -17
  25. package/dist/mjs/types/common.d.ts +6 -0
  26. package/dist/mjs/types/common.js +7 -0
  27. package/dist/umd/data-structure-typed.js +48 -42
  28. package/dist/umd/data-structure-typed.min.js +2 -2
  29. package/dist/umd/data-structure-typed.min.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +5 -1
  32. package/src/data-structures/binary-tree/avl-tree.ts +1 -1
  33. package/src/data-structures/binary-tree/binary-tree.ts +12 -10
  34. package/src/data-structures/binary-tree/bst.ts +18 -18
  35. package/src/data-structures/binary-tree/rb-tree.ts +11 -22
  36. package/src/types/common.ts +7 -0
  37. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +4 -1
  38. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +266 -266
  39. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +247 -235
@@ -14,12 +14,13 @@ const isDebug = isDebugTest;
14
14
  // const isDebug = true;
15
15
 
16
16
  describe('TreeMultiMap count', () => {
17
- let tm: TreeMultiMap<number>;
17
+ let tmm: TreeMultiMap<number>;
18
18
  beforeEach(() => {
19
- tm = new TreeMultiMap<number>();
19
+ tmm = new TreeMultiMap<number>();
20
20
  });
21
- it('Should added isolated node count ', () => {
22
- tm.addMany([
21
+
22
+ it('Should added node count ', () => {
23
+ tmm.addMany([
23
24
  [1, 1],
24
25
  [2, 2],
25
26
  [3, 3],
@@ -27,35 +28,45 @@ describe('TreeMultiMap count', () => {
27
28
  [5, 5]
28
29
  ]);
29
30
  const newNode = new TreeMultiMapNode(3, 33, 10);
30
- tm.add(newNode);
31
- expect(tm.count).toBe(15);
32
- expect(tm.getMutableCount()).toBe(15);
33
- expect(tm.getNode(3)?.count).toBe(11);
31
+ tmm.add(newNode);
32
+ expect(tmm.count).toBe(15);
33
+ expect(tmm.getMutableCount()).toBe(15);
34
+ expect(tmm.getNode(3)?.count).toBe(11);
34
35
  });
35
36
 
36
37
  it('Should count', () => {
37
- tm.addMany([
38
+ tmm.addMany([
38
39
  [1, 1],
39
40
  [2, 2],
40
41
  [3, 3]
41
42
  ]);
42
- tm.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 1);
43
- expect(tm.getMutableCount()).toBe(7);
44
- expect(tm.count).toBe(3);
43
+ tmm.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 1);
44
+ expect(tmm.getMutableCount()).toBe(7);
45
+ expect(tmm.count).toBe(3);
45
46
  });
46
47
  });
47
48
 
48
49
  describe('TreeMultiMap operations test1', () => {
50
+ it('should height ', () => {
51
+ const tmm = new TreeMultiMap();
52
+ expect(tmm.getHeight()).toBe(-1);
53
+ expect(tmm.getMinHeight()).toBe(-1);
54
+
55
+ tmm.addMany([1, 6, 7, 2, 3, 4, 9, 11, 8, 5, 10, 12, 16, 14, 13, 15]);
56
+ expect(tmm.getHeight()).toBe(5);
57
+ expect(tmm.getMinHeight()).toBe(2);
58
+ });
59
+
49
60
  it('should size and count', () => {
50
- const treeMultiMap = new TreeMultiMap();
61
+ const tmm = new TreeMultiMap();
51
62
 
52
- expect(treeMultiMap instanceof TreeMultiMap);
63
+ expect(tmm instanceof TreeMultiMap);
53
64
 
54
- treeMultiMap.add([11, 11]);
55
- treeMultiMap.add([3, 3]);
56
- expect(treeMultiMap.count).toBe(2);
57
- expect(treeMultiMap.getMutableCount()).toBe(2);
58
- expect(treeMultiMap.size).toBe(2);
65
+ tmm.add([11, 11]);
66
+ tmm.add([3, 3]);
67
+ expect(tmm.count).toBe(2);
68
+ expect(tmm.getMutableCount()).toBe(2);
69
+ expect(tmm.size).toBe(2);
59
70
 
60
71
  const keyValuePairs: [number, number][] = [
61
72
  [11, 11],
@@ -76,25 +87,25 @@ describe('TreeMultiMap operations test1', () => {
76
87
  [5, 5]
77
88
  ];
78
89
 
79
- treeMultiMap.addMany(keyValuePairs);
80
- expect(treeMultiMap.size).toBe(16);
81
- expect(treeMultiMap.count).toBe(18);
82
- expect(treeMultiMap.getMutableCount()).toBe(18);
83
- treeMultiMap.delete(11);
84
- expect(treeMultiMap.count).toBe(17);
85
- expect(treeMultiMap.getMutableCount()).toBe(17);
86
- treeMultiMap.delete(3, undefined, true);
87
- expect(treeMultiMap.count).toBe(15);
88
- expect(treeMultiMap.getMutableCount()).toBe(15);
90
+ tmm.addMany(keyValuePairs);
91
+ expect(tmm.size).toBe(16);
92
+ expect(tmm.count).toBe(18);
93
+ expect(tmm.getMutableCount()).toBe(18);
94
+ tmm.delete(11);
95
+ expect(tmm.count).toBe(17);
96
+ expect(tmm.getMutableCount()).toBe(17);
97
+ tmm.delete(3, undefined, true);
98
+ expect(tmm.count).toBe(15);
99
+ expect(tmm.getMutableCount()).toBe(15);
89
100
  });
90
101
 
91
102
  it('should perform various operations on a Binary Search Tree with numeric values1', () => {
92
- const treeMultiMap = new TreeMultiMap();
103
+ const tmm = new TreeMultiMap();
93
104
 
94
- expect(treeMultiMap instanceof TreeMultiMap);
105
+ expect(tmm instanceof TreeMultiMap);
95
106
 
96
- treeMultiMap.add([11, 11]);
97
- treeMultiMap.add([3, 3]);
107
+ tmm.add([11, 11]);
108
+ tmm.add([3, 3]);
98
109
  const idAndValues: [number, number][] = [
99
110
  [11, 11],
100
111
  [3, 3],
@@ -113,201 +124,200 @@ describe('TreeMultiMap operations test1', () => {
113
124
  [10, 10],
114
125
  [5, 5]
115
126
  ];
116
- treeMultiMap.addMany(idAndValues);
117
- expect(treeMultiMap.root instanceof TreeMultiMapNode);
127
+ tmm.addMany(idAndValues);
128
+ expect(tmm.root instanceof TreeMultiMapNode);
118
129
 
119
- if (treeMultiMap.root) expect(treeMultiMap.root.key == 11);
130
+ if (tmm.root) expect(tmm.root.key == 11);
120
131
 
121
- expect(treeMultiMap.size).toBe(16);
122
- expect(treeMultiMap.count).toBe(18);
123
- expect(treeMultiMap.getMutableCount()).toBe(18);
132
+ expect(tmm.size).toBe(16);
133
+ expect(tmm.count).toBe(18);
134
+ expect(tmm.getMutableCount()).toBe(18);
124
135
 
125
- expect(treeMultiMap.has(6));
126
- isDebug && treeMultiMap.print();
127
- expect(treeMultiMap.getHeight(6)).toBe(1);
128
- expect(treeMultiMap.getDepth(6)).toBe(3);
129
- const nodeId10 = treeMultiMap.getNode(10);
136
+ expect(tmm.has(6));
137
+ isDebug && tmm.print();
138
+ expect(tmm.getHeight(6)).toBe(1);
139
+ expect(tmm.getDepth(6)).toBe(3);
140
+ const nodeId10 = tmm.getNode(10);
130
141
  expect(nodeId10?.key).toBe(10);
131
142
 
132
- const nodeVal9 = treeMultiMap.getNode(9, node => node.value);
143
+ const nodeVal9 = tmm.getNode(9, node => node.value);
133
144
  expect(nodeVal9?.key).toBe(9);
134
145
 
135
- const nodesByCount1 = treeMultiMap.getNodes(1, node => node.count);
146
+ const nodesByCount1 = tmm.getNodes(1, node => node.count);
136
147
  expect(nodesByCount1.length).toBe(14);
137
148
 
138
- const nodesByCount2 = treeMultiMap.getNodes(2, node => node.count);
149
+ const nodesByCount2 = tmm.getNodes(2, node => node.count);
139
150
  expect(nodesByCount2.length).toBe(2);
140
- const leftMost = treeMultiMap.getLeftMost();
151
+ const leftMost = tmm.getLeftMost();
141
152
  expect(leftMost?.key).toBe(1);
142
153
 
143
- const node15 = treeMultiMap.getNode(15);
144
- const minNodeBySpecificNode = node15 && treeMultiMap.getLeftMost(node15);
154
+ const node15 = tmm.getNode(15);
155
+ const minNodeBySpecificNode = node15 && tmm.getLeftMost(node15);
145
156
  expect(minNodeBySpecificNode?.key).toBe(14);
146
157
 
147
158
  let subTreeSum = 0;
148
- node15 && treeMultiMap.dfs(node => (subTreeSum += node.key), 'pre', 15);
159
+ node15 && tmm.dfs(node => (subTreeSum += node.key), 'pre', 15);
149
160
  expect(subTreeSum).toBe(45);
150
161
  let lesserSum = 0;
151
- treeMultiMap.lesserOrGreaterTraverse((node: TreeMultiMapNode<number>) => (lesserSum += node.key), CP.lt, 10);
162
+ tmm.lesserOrGreaterTraverse((node: TreeMultiMapNode<number>) => (lesserSum += node.key), CP.lt, 10);
152
163
  expect(lesserSum).toBe(45);
153
164
 
154
165
  expect(node15 instanceof TreeMultiMapNode);
155
166
  if (node15 instanceof TreeMultiMapNode) {
156
- const subTreeAdd = treeMultiMap.dfs(node => (node.count += 1), 'pre', 15);
167
+ const subTreeAdd = tmm.dfs(node => (node.count += 1), 'pre', 15);
157
168
  expect(subTreeAdd);
158
169
  }
159
- const node11 = treeMultiMap.getNode(11);
170
+ const node11 = tmm.getNode(11);
160
171
  expect(node11 instanceof TreeMultiMapNode);
161
172
  if (node11 instanceof TreeMultiMapNode) {
162
- const allGreaterNodesAdded = treeMultiMap.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 11);
173
+ const allGreaterNodesAdded = tmm.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 11);
163
174
  expect(allGreaterNodesAdded);
164
175
  }
165
176
 
166
- const dfsInorderNodes = treeMultiMap.dfs(node => node, 'in');
177
+ const dfsInorderNodes = tmm.dfs(node => node, 'in');
167
178
  expect(dfsInorderNodes[0].key).toBe(1);
168
179
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
180
+ expect(tmm.isPerfectlyBalanced()).toBe(false);
181
+ tmm.perfectlyBalance();
182
+ expect(tmm.isPerfectlyBalanced()).toBe(false);
169
183
 
170
- expect(treeMultiMap.isPerfectlyBalanced()).toBe(true);
171
- treeMultiMap.perfectlyBalance();
172
- expect(treeMultiMap.isPerfectlyBalanced()).toBe(false);
184
+ expect(tmm.isAVLBalanced()).toBe(false);
173
185
 
174
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
175
-
176
- const bfsNodesAfterBalanced = treeMultiMap.bfs(node => node);
186
+ const bfsNodesAfterBalanced = tmm.bfs(node => node);
177
187
  expect(bfsNodesAfterBalanced[0].key).toBe(6);
178
188
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
179
189
 
180
- const removed11 = treeMultiMap.delete(11, undefined, true);
190
+ const removed11 = tmm.delete(11, undefined, true);
181
191
  expect(removed11 instanceof Array);
182
192
  expect(removed11[0]);
183
193
  expect(removed11[0].deleted);
184
194
 
185
195
  if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
186
196
 
187
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
197
+ expect(tmm.isAVLBalanced()).toBe(false);
188
198
 
189
- expect(treeMultiMap.getHeight(15)).toBe(1);
199
+ expect(tmm.getHeight(15)).toBe(1);
190
200
 
191
- const removed1 = treeMultiMap.delete(1, undefined, true);
201
+ const removed1 = tmm.delete(1, undefined, true);
192
202
  expect(removed1 instanceof Array);
193
203
  expect(removed1[0]);
194
204
  expect(removed1[0].deleted);
195
205
  if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
196
206
 
197
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
207
+ expect(tmm.isAVLBalanced()).toBe(false);
198
208
 
199
- expect(treeMultiMap.getHeight()).toBe(5);
209
+ expect(tmm.getHeight()).toBe(5);
200
210
 
201
- const removed4 = treeMultiMap.delete(4, undefined, true);
211
+ const removed4 = tmm.delete(4, undefined, true);
202
212
  expect(removed4 instanceof Array);
203
213
  expect(removed4[0]);
204
214
  expect(removed4[0].deleted);
205
215
  if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
206
216
 
207
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
208
- expect(treeMultiMap.getHeight()).toBe(5);
217
+ expect(tmm.isAVLBalanced()).toBe(false);
218
+ expect(tmm.getHeight()).toBe(5);
209
219
 
210
- const removed10 = treeMultiMap.delete(10, undefined, true);
220
+ const removed10 = tmm.delete(10, undefined, true);
211
221
  expect(removed10 instanceof Array);
212
222
  expect(removed10[0]);
213
223
  expect(removed10[0].deleted);
214
224
  if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
215
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
225
+ expect(tmm.isAVLBalanced()).toBe(false);
216
226
 
217
- expect(treeMultiMap.getHeight()).toBe(4);
227
+ expect(tmm.getHeight()).toBe(4);
218
228
 
219
- const removed15 = treeMultiMap.delete(15, undefined, true);
229
+ const removed15 = tmm.delete(15, undefined, true);
220
230
  expect(removed15 instanceof Array);
221
231
  expect(removed15[0]);
222
232
  expect(removed15[0].deleted);
223
233
  if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
224
234
 
225
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
226
- expect(treeMultiMap.getHeight()).toBe(3);
235
+ expect(tmm.isAVLBalanced()).toBe(false);
236
+ expect(tmm.getHeight()).toBe(3);
227
237
 
228
- const removed5 = treeMultiMap.delete(5, undefined, true);
238
+ const removed5 = tmm.delete(5, undefined, true);
229
239
  expect(removed5 instanceof Array);
230
240
  expect(removed5[0]);
231
241
  expect(removed5[0].deleted);
232
242
  if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
233
243
 
234
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
235
- expect(treeMultiMap.getHeight()).toBe(3);
244
+ expect(tmm.isAVLBalanced()).toBe(true);
245
+ expect(tmm.getHeight()).toBe(3);
236
246
 
237
- const removed13 = treeMultiMap.delete(13, undefined, true);
247
+ const removed13 = tmm.delete(13, undefined, true);
238
248
  expect(removed13 instanceof Array);
239
249
  expect(removed13[0]);
240
250
  expect(removed13[0].deleted);
241
251
  if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
242
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
243
- expect(treeMultiMap.getHeight()).toBe(3);
252
+ expect(tmm.isAVLBalanced()).toBe(true);
253
+ expect(tmm.getHeight()).toBe(3);
244
254
 
245
- const removed3 = treeMultiMap.delete(3, undefined, true);
255
+ const removed3 = tmm.delete(3, undefined, true);
246
256
  expect(removed3 instanceof Array);
247
257
  expect(removed3[0]);
248
258
  expect(removed3[0].deleted);
249
259
  if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
250
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
251
- expect(treeMultiMap.getHeight()).toBe(3);
260
+ expect(tmm.isAVLBalanced()).toBe(false);
261
+ expect(tmm.getHeight()).toBe(3);
252
262
 
253
- const removed8 = treeMultiMap.delete(8, undefined, true);
263
+ const removed8 = tmm.delete(8, undefined, true);
254
264
  expect(removed8 instanceof Array);
255
265
  expect(removed8[0]);
256
266
  expect(removed8[0].deleted);
257
267
  if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
258
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
259
- expect(treeMultiMap.getHeight()).toBe(3);
268
+ expect(tmm.isAVLBalanced()).toBe(false);
269
+ expect(tmm.getHeight()).toBe(3);
260
270
 
261
- const removed6 = treeMultiMap.delete(6, undefined, true);
271
+ const removed6 = tmm.delete(6, undefined, true);
262
272
  expect(removed6 instanceof Array);
263
273
  expect(removed6[0]);
264
274
  expect(removed6[0].deleted);
265
275
  if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
266
- expect(treeMultiMap.delete(6, undefined, true).length).toBe(0);
267
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
276
+ expect(tmm.delete(6, undefined, true).length).toBe(0);
277
+ expect(tmm.isAVLBalanced()).toBe(false);
268
278
 
269
- expect(treeMultiMap.getHeight()).toBe(3);
279
+ expect(tmm.getHeight()).toBe(3);
270
280
 
271
- const removed7 = treeMultiMap.delete(7, undefined, true);
281
+ const removed7 = tmm.delete(7, undefined, true);
272
282
  expect(removed7 instanceof Array);
273
283
  expect(removed7[0]);
274
284
  expect(removed7[0].deleted);
275
285
  if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
276
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
277
- expect(treeMultiMap.getHeight()).toBe(3);
286
+ expect(tmm.isAVLBalanced()).toBe(false);
287
+ expect(tmm.getHeight()).toBe(3);
278
288
 
279
- const removed9 = treeMultiMap.delete(9, undefined, true);
289
+ const removed9 = tmm.delete(9, undefined, true);
280
290
  expect(removed9 instanceof Array);
281
291
  expect(removed9[0]);
282
292
  expect(removed9[0].deleted);
283
293
  if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
284
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
285
- expect(treeMultiMap.getHeight()).toBe(2);
294
+ expect(tmm.isAVLBalanced()).toBe(true);
295
+ expect(tmm.getHeight()).toBe(2);
286
296
 
287
- const removed14 = treeMultiMap.delete(14, undefined, true);
297
+ const removed14 = tmm.delete(14, undefined, true);
288
298
  expect(removed14 instanceof Array);
289
299
  expect(removed14[0]);
290
300
  expect(removed14[0].deleted);
291
301
  if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
292
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
293
- expect(treeMultiMap.getHeight()).toBe(1);
302
+ expect(tmm.isAVLBalanced()).toBe(true);
303
+ expect(tmm.getHeight()).toBe(1);
294
304
 
295
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
305
+ expect(tmm.isAVLBalanced()).toBe(true);
296
306
 
297
- const bfsIDs = treeMultiMap.bfs(node => node.key);
307
+ const bfsIDs = tmm.bfs(node => node.key);
298
308
 
299
309
  expect(bfsIDs[0]).toBe(12);
300
310
  expect(bfsIDs[1]).toBe(2);
301
311
  expect(bfsIDs[2]).toBe(16);
302
312
 
303
- const bfsNodes = treeMultiMap.bfs(node => node);
313
+ const bfsNodes = tmm.bfs(node => node);
304
314
 
305
315
  expect(bfsNodes[0].key).toBe(12);
306
316
  expect(bfsNodes[1].key).toBe(2);
307
317
  expect(bfsNodes[2].key).toBe(16);
308
318
 
309
- expect(treeMultiMap.count).toBe(6);
310
- expect(treeMultiMap.getMutableCount()).toBe(8);
319
+ expect(tmm.count).toBe(6);
320
+ expect(tmm.getMutableCount()).toBe(8);
311
321
  });
312
322
 
313
323
  it('should perform various operations on a Binary Search Tree with object values', () => {
@@ -347,11 +357,11 @@ describe('TreeMultiMap operations test1', () => {
347
357
 
348
358
  describe('TreeMultiMap operations test recursively1', () => {
349
359
  it('should perform various operations on a Binary Search Tree with numeric values1', () => {
350
- const treeMultiMap = new TreeMultiMap<number>([], { iterationType: IterationType.RECURSIVE });
360
+ const tmm = new TreeMultiMap<number>([], { iterationType: IterationType.RECURSIVE });
351
361
 
352
- expect(treeMultiMap instanceof TreeMultiMap);
353
- treeMultiMap.add([11, 11]);
354
- treeMultiMap.add([3, 3]);
362
+ expect(tmm instanceof TreeMultiMap);
363
+ tmm.add([11, 11]);
364
+ tmm.add([3, 3]);
355
365
  const idAndValues: [number, number][] = [
356
366
  [11, 11],
357
367
  [3, 3],
@@ -370,43 +380,43 @@ describe('TreeMultiMap operations test recursively1', () => {
370
380
  [10, 10],
371
381
  [5, 5]
372
382
  ];
373
- treeMultiMap.addMany(idAndValues);
374
- expect(treeMultiMap.root).toBeInstanceOf(TreeMultiMapNode);
383
+ tmm.addMany(idAndValues);
384
+ expect(tmm.root).toBeInstanceOf(TreeMultiMapNode);
375
385
 
376
- if (treeMultiMap.root) expect(treeMultiMap.root.key).toBe(5);
386
+ if (tmm.root) expect(tmm.root.key).toBe(5);
377
387
 
378
- expect(treeMultiMap.size).toBe(16);
379
- expect(treeMultiMap.count).toBe(18);
380
- expect(treeMultiMap.getMutableCount()).toBe(18);
388
+ expect(tmm.size).toBe(16);
389
+ expect(tmm.count).toBe(18);
390
+ expect(tmm.getMutableCount()).toBe(18);
381
391
 
382
- expect(treeMultiMap.has(6));
392
+ expect(tmm.has(6));
383
393
 
384
- expect(treeMultiMap.getHeight(6)).toBe(1);
385
- expect(treeMultiMap.getDepth(6)).toBe(3);
386
- const nodeId10 = treeMultiMap.getNode(10);
394
+ expect(tmm.getHeight(6)).toBe(1);
395
+ expect(tmm.getDepth(6)).toBe(3);
396
+ const nodeId10 = tmm.getNode(10);
387
397
  expect(nodeId10?.key).toBe(10);
388
398
 
389
- const nodeVal9 = treeMultiMap.getNode(9, node => node.value);
399
+ const nodeVal9 = tmm.getNode(9, node => node.value);
390
400
  expect(nodeVal9?.key).toBe(9);
391
401
 
392
- const nodesByCount1 = treeMultiMap.getNodes(1, node => node.count);
402
+ const nodesByCount1 = tmm.getNodes(1, node => node.count);
393
403
  expect(nodesByCount1.length).toBe(14);
394
404
 
395
- const nodesByCount2 = treeMultiMap.getNodes(2, node => node.count);
405
+ const nodesByCount2 = tmm.getNodes(2, node => node.count);
396
406
  expect(nodesByCount2.length).toBe(2);
397
- const leftMost = treeMultiMap.getLeftMost();
407
+ const leftMost = tmm.getLeftMost();
398
408
  expect(leftMost?.key).toBe(1);
399
409
 
400
- const node15 = treeMultiMap.getNode(15);
401
- const minNodeBySpecificNode = node15 && treeMultiMap.getLeftMost(node15);
410
+ const node15 = tmm.getNode(15);
411
+ const minNodeBySpecificNode = node15 && tmm.getLeftMost(node15);
402
412
  expect(minNodeBySpecificNode?.key).toBe(14);
403
413
 
404
414
  let subTreeSum = 0;
405
- node15 && treeMultiMap.dfs(node => (subTreeSum += node.key), 'pre', 15);
415
+ node15 && tmm.dfs(node => (subTreeSum += node.key), 'pre', 15);
406
416
  expect(subTreeSum).toBe(45);
407
417
  let lesserSum = 0;
408
- expect(treeMultiMap.has(9)).toBe(true);
409
- treeMultiMap.lesserOrGreaterTraverse(
418
+ expect(tmm.has(9)).toBe(true);
419
+ tmm.lesserOrGreaterTraverse(
410
420
  node => {
411
421
  lesserSum += node.key;
412
422
  return node.key;
@@ -418,161 +428,161 @@ describe('TreeMultiMap operations test recursively1', () => {
418
428
 
419
429
  expect(node15 instanceof TreeMultiMapNode);
420
430
  if (node15 instanceof TreeMultiMapNode) {
421
- const subTreeAdd = treeMultiMap.dfs(node => (node.count += 1), 'pre', 15);
431
+ const subTreeAdd = tmm.dfs(node => (node.count += 1), 'pre', 15);
422
432
  expect(subTreeAdd);
423
433
  }
424
- const node11 = treeMultiMap.getNode(11);
434
+ const node11 = tmm.getNode(11);
425
435
  expect(node11 instanceof TreeMultiMapNode);
426
436
  if (node11 instanceof TreeMultiMapNode) {
427
- const allGreaterNodesAdded = treeMultiMap.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 11);
437
+ const allGreaterNodesAdded = tmm.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 11);
428
438
  expect(allGreaterNodesAdded);
429
439
  }
430
440
 
431
- const dfsInorderNodes = treeMultiMap.dfs(node => node, 'in');
441
+ const dfsInorderNodes = tmm.dfs(node => node, 'in');
432
442
  expect(dfsInorderNodes[0].key).toBe(1);
433
443
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
434
- expect(treeMultiMap.isPerfectlyBalanced()).toBe(true);
444
+ expect(tmm.isPerfectlyBalanced()).toBe(false);
435
445
 
436
- treeMultiMap.perfectlyBalance();
446
+ tmm.perfectlyBalance();
437
447
 
438
- expect(treeMultiMap.isPerfectlyBalanced()).toBe(false);
439
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
448
+ expect(tmm.isPerfectlyBalanced()).toBe(false);
449
+ expect(tmm.isAVLBalanced()).toBe(false);
440
450
 
441
- const bfsNodesAfterBalanced = treeMultiMap.bfs(node => node);
451
+ const bfsNodesAfterBalanced = tmm.bfs(node => node);
442
452
  expect(bfsNodesAfterBalanced[0].key).toBe(6);
443
453
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
444
454
 
445
- const removed11 = treeMultiMap.delete(11, undefined, true);
455
+ const removed11 = tmm.delete(11, undefined, true);
446
456
  expect(removed11 instanceof Array);
447
457
  expect(removed11[0]);
448
458
  expect(removed11[0].deleted);
449
459
 
450
460
  if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
451
461
 
452
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
462
+ expect(tmm.isAVLBalanced()).toBe(false);
453
463
 
454
- expect(treeMultiMap.getHeight(15)).toBe(1);
464
+ expect(tmm.getHeight(15)).toBe(1);
455
465
 
456
- const removed1 = treeMultiMap.delete(1, undefined, true);
466
+ const removed1 = tmm.delete(1, undefined, true);
457
467
  expect(removed1 instanceof Array);
458
468
  expect(removed1[0]);
459
469
  expect(removed1[0].deleted);
460
470
  if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
461
471
 
462
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
472
+ expect(tmm.isAVLBalanced()).toBe(false);
463
473
 
464
- expect(treeMultiMap.getHeight()).toBe(5);
474
+ expect(tmm.getHeight()).toBe(5);
465
475
 
466
- const removed4 = treeMultiMap.delete(4, undefined, true);
476
+ const removed4 = tmm.delete(4, undefined, true);
467
477
  expect(removed4 instanceof Array);
468
478
  expect(removed4[0]);
469
479
  expect(removed4[0].deleted);
470
480
  if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
471
481
 
472
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
473
- expect(treeMultiMap.getHeight()).toBe(5);
482
+ expect(tmm.isAVLBalanced()).toBe(false);
483
+ expect(tmm.getHeight()).toBe(5);
474
484
 
475
- const removed10 = treeMultiMap.delete(10, undefined, true);
485
+ const removed10 = tmm.delete(10, undefined, true);
476
486
  expect(removed10 instanceof Array);
477
487
  expect(removed10[0]);
478
488
  expect(removed10[0].deleted);
479
489
  if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
480
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
490
+ expect(tmm.isAVLBalanced()).toBe(false);
481
491
 
482
- expect(treeMultiMap.getHeight()).toBe(4);
492
+ expect(tmm.getHeight()).toBe(4);
483
493
 
484
- const removed15 = treeMultiMap.delete(15, undefined, true);
494
+ const removed15 = tmm.delete(15, undefined, true);
485
495
  expect(removed15 instanceof Array);
486
496
  expect(removed15[0]);
487
497
  expect(removed15[0].deleted);
488
498
  if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
489
499
 
490
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
491
- expect(treeMultiMap.getHeight()).toBe(3);
500
+ expect(tmm.isAVLBalanced()).toBe(false);
501
+ expect(tmm.getHeight()).toBe(3);
492
502
 
493
- const removed5 = treeMultiMap.delete(5, undefined, true);
503
+ const removed5 = tmm.delete(5, undefined, true);
494
504
  expect(removed5 instanceof Array);
495
505
  expect(removed5[0]);
496
506
  expect(removed5[0].deleted);
497
507
  if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
498
508
 
499
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
500
- expect(treeMultiMap.getHeight()).toBe(3);
509
+ expect(tmm.isAVLBalanced()).toBe(true);
510
+ expect(tmm.getHeight()).toBe(3);
501
511
 
502
- const removed13 = treeMultiMap.delete(13, undefined, true);
512
+ const removed13 = tmm.delete(13, undefined, true);
503
513
  expect(removed13 instanceof Array);
504
514
  expect(removed13[0]);
505
515
  expect(removed13[0].deleted);
506
516
  if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
507
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
508
- expect(treeMultiMap.getHeight()).toBe(3);
517
+ expect(tmm.isAVLBalanced()).toBe(true);
518
+ expect(tmm.getHeight()).toBe(3);
509
519
 
510
- const removed3 = treeMultiMap.delete(3, undefined, true);
520
+ const removed3 = tmm.delete(3, undefined, true);
511
521
  expect(removed3 instanceof Array);
512
522
  expect(removed3[0]);
513
523
  expect(removed3[0].deleted);
514
524
  if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
515
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
516
- expect(treeMultiMap.getHeight()).toBe(3);
525
+ expect(tmm.isAVLBalanced()).toBe(false);
526
+ expect(tmm.getHeight()).toBe(3);
517
527
 
518
- const removed8 = treeMultiMap.delete(8, undefined, true);
528
+ const removed8 = tmm.delete(8, undefined, true);
519
529
  expect(removed8 instanceof Array);
520
530
  expect(removed8[0]);
521
531
  expect(removed8[0].deleted);
522
532
  if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
523
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
524
- expect(treeMultiMap.getHeight()).toBe(3);
533
+ expect(tmm.isAVLBalanced()).toBe(false);
534
+ expect(tmm.getHeight()).toBe(3);
525
535
 
526
- const removed6 = treeMultiMap.delete(6, undefined, true);
536
+ const removed6 = tmm.delete(6, undefined, true);
527
537
  expect(removed6 instanceof Array);
528
538
  expect(removed6[0]);
529
539
  expect(removed6[0].deleted);
530
540
  if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
531
- expect(treeMultiMap.delete(6, undefined, true).length).toBe(0);
532
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
541
+ expect(tmm.delete(6, undefined, true).length).toBe(0);
542
+ expect(tmm.isAVLBalanced()).toBe(false);
533
543
 
534
- expect(treeMultiMap.getHeight()).toBe(3);
544
+ expect(tmm.getHeight()).toBe(3);
535
545
 
536
- const removed7 = treeMultiMap.delete(7, undefined, true);
546
+ const removed7 = tmm.delete(7, undefined, true);
537
547
  expect(removed7 instanceof Array);
538
548
  expect(removed7[0]);
539
549
  expect(removed7[0].deleted);
540
550
  if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
541
- expect(treeMultiMap.isAVLBalanced()).toBe(false);
542
- expect(treeMultiMap.getHeight()).toBe(3);
551
+ expect(tmm.isAVLBalanced()).toBe(false);
552
+ expect(tmm.getHeight()).toBe(3);
543
553
 
544
- const removed9 = treeMultiMap.delete(9, undefined, true);
554
+ const removed9 = tmm.delete(9, undefined, true);
545
555
  expect(removed9 instanceof Array);
546
556
  expect(removed9[0]);
547
557
  expect(removed9[0].deleted);
548
558
  if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
549
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
550
- expect(treeMultiMap.getHeight()).toBe(2);
559
+ expect(tmm.isAVLBalanced()).toBe(true);
560
+ expect(tmm.getHeight()).toBe(2);
551
561
 
552
- const removed14 = treeMultiMap.delete(14, undefined, true);
562
+ const removed14 = tmm.delete(14, undefined, true);
553
563
  expect(removed14 instanceof Array);
554
564
  expect(removed14[0]);
555
565
  expect(removed14[0].deleted);
556
566
  if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
557
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
558
- expect(treeMultiMap.getHeight()).toBe(1);
567
+ expect(tmm.isAVLBalanced()).toBe(true);
568
+ expect(tmm.getHeight()).toBe(1);
559
569
 
560
- expect(treeMultiMap.isAVLBalanced()).toBe(true);
570
+ expect(tmm.isAVLBalanced()).toBe(true);
561
571
 
562
- const bfsIDs = treeMultiMap.bfs(node => node.key);
572
+ const bfsIDs = tmm.bfs(node => node.key);
563
573
 
564
574
  expect(bfsIDs[0]).toBe(12);
565
575
  expect(bfsIDs[1]).toBe(2);
566
576
  expect(bfsIDs[2]).toBe(16);
567
577
 
568
- const bfsNodes = treeMultiMap.bfs(node => node);
578
+ const bfsNodes = tmm.bfs(node => node);
569
579
 
570
580
  expect(bfsNodes[0].key).toBe(12);
571
581
  expect(bfsNodes[1].key).toBe(2);
572
582
  expect(bfsNodes[2].key).toBe(16);
573
583
 
574
- expect(treeMultiMap.count).toBe(6);
575
- expect(treeMultiMap.getMutableCount()).toBe(8);
584
+ expect(tmm.count).toBe(6);
585
+ expect(tmm.getMutableCount()).toBe(8);
576
586
  });
577
587
 
578
588
  it('should perform various operations on a Binary Search Tree with object values', () => {
@@ -611,79 +621,81 @@ describe('TreeMultiMap operations test recursively1', () => {
611
621
  });
612
622
 
613
623
  describe('TreeMultiMap delete test', function () {
614
- const treeMS = new TreeMultiMap<number, number>();
615
- const inputSize = 100; // Adjust input sizes as needed
624
+ const tmm = new TreeMultiMap<number, number>();
625
+ const inputSize = 1000; // Adjust input sizes as needed
616
626
 
617
627
  beforeEach(() => {
618
- treeMS.clear();
628
+ tmm.clear();
619
629
  });
620
630
 
621
631
  it(`Observe the time consumption of TreeMultiMap.dfs be good`, function () {
622
632
  const startDFS = performance.now();
623
- const dfs = treeMS.dfs(node => node);
633
+ const dfs = tmm.dfs(node => node);
624
634
  isDebug && console.log('---bfs', performance.now() - startDFS, dfs.length);
625
635
  });
626
636
 
627
637
  it('The structure remains normal after random deletion', function () {
628
638
  for (let i = 0; i < inputSize; i++) {
629
- treeMS.add(i);
639
+ tmm.add(i);
630
640
  }
631
641
 
642
+ expect(tmm.size).toBe(inputSize);
643
+
632
644
  for (let i = 0; i < inputSize; i++) {
633
645
  const num = getRandomInt(0, inputSize - 1);
634
- treeMS.delete(num);
646
+ tmm.delete(num);
635
647
  }
636
648
 
637
- let nanCount = 0;
649
+ let nilCount = 0;
638
650
  const dfs = (cur: TreeMultiMapNode<number>) => {
639
- if (isNaN(cur.key)) nanCount++;
651
+ if (isNaN(cur.key)) nilCount++;
640
652
  if (cur.left) dfs(cur.left);
641
653
  if (cur.right) dfs(cur.right);
642
654
  };
643
- if (treeMS.root) dfs(treeMS.root);
655
+ if (tmm.root) dfs(tmm.root);
644
656
 
645
- expect(treeMS.size).toBeLessThanOrEqual(inputSize);
646
- expect(treeMS.getHeight()).toBeGreaterThan(Math.log2(inputSize));
647
- expect(treeMS.getHeight()).toBeLessThan(Math.log2(inputSize) * 2);
657
+ expect(tmm.size).toBeLessThanOrEqual(inputSize);
658
+ expect(tmm.getHeight()).toBeGreaterThan(Math.log2(inputSize) - 1);
659
+ expect(tmm.getHeight()).toBeLessThan(Math.log2(inputSize) * 2);
648
660
 
649
- expect(nanCount).toBeLessThanOrEqual(inputSize);
661
+ expect(nilCount).toBe(tmm.size + 1);
650
662
  });
651
663
 
652
664
  it(`Random additions, complete deletions of structures are normal`, function () {
653
665
  for (let i = 0; i < inputSize; i++) {
654
666
  const num = getRandomInt(0, inputSize - 1);
655
667
  if (i === 0 && isDebug) console.log(`first:`, num);
656
- treeMS.add(num);
668
+ tmm.add(num);
657
669
  }
658
670
 
659
671
  for (let i = 0; i < inputSize; i++) {
660
- treeMS.delete(i, undefined, true);
672
+ tmm.delete(i, undefined, true);
661
673
  }
662
674
 
663
- let nanCount = 0;
675
+ let nilCount = 0;
664
676
  const dfs = (cur: TreeMultiMapNode<number>) => {
665
- if (isNaN(cur.key)) nanCount++;
677
+ if (isNaN(cur.key)) nilCount++;
666
678
  if (cur.left) dfs(cur.left);
667
679
  if (cur.right) dfs(cur.right);
668
680
  };
669
- if (treeMS.root) dfs(treeMS.root);
681
+ if (tmm.root) dfs(tmm.root);
670
682
 
671
- expect(treeMS.size).toBe(0);
672
- expect(treeMS.getHeight()).toBe(0);
673
- expect(nanCount).toBeLessThanOrEqual(inputSize);
683
+ expect(tmm.size).toBe(0);
684
+ expect(tmm.getHeight()).toBe(-1);
685
+ expect(nilCount).toBe(tmm.size + 1);
674
686
 
675
- isDebug && treeMS.print();
687
+ isDebug && tmm.print();
676
688
  });
677
689
 
678
690
  it(`Random additions, count deletions of structures are normal`, function () {
679
691
  for (let i = 0; i < inputSize; i++) {
680
692
  const num = getRandomInt(0, inputSize - 1);
681
693
  if (i === 0 && isDebug) console.log(`first:`, num);
682
- treeMS.add(num);
694
+ tmm.add(num);
683
695
  }
684
696
 
685
697
  for (let i = 0; i < inputSize; i++) {
686
- treeMS.delete(i);
698
+ tmm.delete(i);
687
699
  }
688
700
 
689
701
  let nanCount = 0;
@@ -692,49 +704,49 @@ describe('TreeMultiMap delete test', function () {
692
704
  if (cur.left) dfs(cur.left);
693
705
  if (cur.right) dfs(cur.right);
694
706
  };
695
- if (treeMS.root) dfs(treeMS.root);
707
+ if (tmm.root) dfs(tmm.root);
696
708
 
697
- expect(treeMS.size).toBeGreaterThanOrEqual(0);
698
- expect(treeMS.getHeight()).toBeGreaterThanOrEqual(0);
709
+ expect(tmm.size).toBeGreaterThanOrEqual(0);
710
+ expect(tmm.getHeight()).toBeGreaterThanOrEqual(0);
699
711
  expect(nanCount).toBeLessThanOrEqual(inputSize);
700
712
 
701
- isDebug && treeMS.print();
713
+ isDebug && tmm.print();
702
714
  });
703
715
 
704
716
  it('should the clone method', () => {
705
- function checkTreeStructure(treeMultiMap: TreeMultiMap<string, number>) {
706
- expect(treeMultiMap.size).toBe(4);
707
- expect(treeMultiMap.root?.key).toBe('2');
708
- expect(treeMultiMap.root?.left?.key).toBe('1');
709
- expect(treeMultiMap.root?.left?.left?.key).toBe(NaN);
710
- expect(treeMultiMap.root?.left?.right?.key).toBe(NaN);
711
- expect(treeMultiMap.root?.right?.key).toBe('4');
712
- expect(treeMultiMap.root?.right?.left?.key).toBe(NaN);
713
- expect(treeMultiMap.root?.right?.right?.key).toBe('5');
717
+ function checkTreeStructure(tmm: TreeMultiMap<string, number>) {
718
+ expect(tmm.size).toBe(4);
719
+ expect(tmm.root?.key).toBe('2');
720
+ expect(tmm.root?.left?.key).toBe('1');
721
+ expect(tmm.root?.left?.left?.key).toBe(NaN);
722
+ expect(tmm.root?.left?.right?.key).toBe(NaN);
723
+ expect(tmm.root?.right?.key).toBe('4');
724
+ expect(tmm.root?.right?.left?.key).toBe(NaN);
725
+ expect(tmm.root?.right?.right?.key).toBe('5');
714
726
  }
715
727
 
716
- const treeMultiMap = new TreeMultiMap<string, number>();
717
- treeMultiMap.addMany([
728
+ const tmm = new TreeMultiMap<string, number>();
729
+ tmm.addMany([
718
730
  ['2', 2],
719
731
  ['4', 4],
720
732
  ['5', 5],
721
733
  ['3', 3],
722
734
  ['1', 1]
723
735
  ]);
724
- expect(treeMultiMap.size).toBe(5);
725
- expect(treeMultiMap.root?.key).toBe('2');
726
- expect(treeMultiMap.root?.left?.key).toBe('1');
727
- expect(treeMultiMap.root?.left?.left?.key).toBe(NaN);
728
- expect(treeMultiMap.root?.left?.right?.key).toBe(NaN);
729
- expect(treeMultiMap.root?.right?.key).toBe('4');
730
- expect(treeMultiMap.root?.right?.left?.key).toBe(`3`);
731
- expect(treeMultiMap.root?.right?.right?.key).toBe('5');
732
- treeMultiMap.delete('3');
733
- checkTreeStructure(treeMultiMap);
734
- const cloned = treeMultiMap.clone();
736
+ expect(tmm.size).toBe(5);
737
+ expect(tmm.root?.key).toBe('2');
738
+ expect(tmm.root?.left?.key).toBe('1');
739
+ expect(tmm.root?.left?.left?.key).toBe(NaN);
740
+ expect(tmm.root?.left?.right?.key).toBe(NaN);
741
+ expect(tmm.root?.right?.key).toBe('4');
742
+ expect(tmm.root?.right?.left?.key).toBe(`3`);
743
+ expect(tmm.root?.right?.right?.key).toBe('5');
744
+ tmm.delete('3');
745
+ checkTreeStructure(tmm);
746
+ const cloned = tmm.clone();
735
747
  checkTreeStructure(cloned);
736
748
  cloned.delete('1');
737
- expect(treeMultiMap.size).toBe(4);
749
+ expect(tmm.size).toBe(4);
738
750
  expect(cloned.size).toBe(3);
739
751
  });
740
752
  });