data-structure-typed 2.6.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/cjs/binary-tree.cjs +2927 -23688
  3. package/dist/cjs/graph.cjs +845 -2634
  4. package/dist/cjs/hash.cjs +185 -616
  5. package/dist/cjs/heap.cjs +266 -818
  6. package/dist/cjs/index.cjs +5116 -31358
  7. package/dist/cjs/linked-list.cjs +644 -2615
  8. package/dist/cjs/matrix.cjs +220 -535
  9. package/dist/cjs/priority-queue.cjs +266 -818
  10. package/dist/cjs/queue.cjs +637 -2343
  11. package/dist/cjs/stack.cjs +124 -530
  12. package/dist/cjs/trie.cjs +145 -592
  13. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  14. package/dist/cjs-legacy/graph.cjs +847 -2636
  15. package/dist/cjs-legacy/hash.cjs +181 -612
  16. package/dist/cjs-legacy/heap.cjs +266 -818
  17. package/dist/cjs-legacy/index.cjs +6657 -32899
  18. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  19. package/dist/cjs-legacy/matrix.cjs +220 -535
  20. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  21. package/dist/cjs-legacy/queue.cjs +634 -2340
  22. package/dist/cjs-legacy/stack.cjs +124 -530
  23. package/dist/cjs-legacy/trie.cjs +145 -592
  24. package/dist/esm/binary-tree.mjs +2927 -23688
  25. package/dist/esm/graph.mjs +845 -2634
  26. package/dist/esm/hash.mjs +185 -616
  27. package/dist/esm/heap.mjs +266 -818
  28. package/dist/esm/index.mjs +5116 -31358
  29. package/dist/esm/linked-list.mjs +644 -2615
  30. package/dist/esm/matrix.mjs +220 -535
  31. package/dist/esm/priority-queue.mjs +266 -818
  32. package/dist/esm/queue.mjs +637 -2343
  33. package/dist/esm/stack.mjs +124 -530
  34. package/dist/esm/trie.mjs +145 -592
  35. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  36. package/dist/esm-legacy/graph.mjs +847 -2636
  37. package/dist/esm-legacy/hash.mjs +181 -612
  38. package/dist/esm-legacy/heap.mjs +266 -818
  39. package/dist/esm-legacy/index.mjs +6657 -32899
  40. package/dist/esm-legacy/linked-list.mjs +640 -2611
  41. package/dist/esm-legacy/matrix.mjs +220 -535
  42. package/dist/esm-legacy/priority-queue.mjs +266 -818
  43. package/dist/esm-legacy/queue.mjs +634 -2340
  44. package/dist/esm-legacy/stack.mjs +124 -530
  45. package/dist/esm-legacy/trie.mjs +145 -592
  46. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  47. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  48. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  49. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  50. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  51. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  52. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  53. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  54. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  55. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  56. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  57. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  58. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  59. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  60. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  61. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  62. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  63. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  64. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  65. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  66. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  67. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  68. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  69. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  70. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  71. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  72. package/dist/umd/data-structure-typed.js +6580 -32822
  73. package/dist/umd/data-structure-typed.min.js +3 -3
  74. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  75. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  76. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  77. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  78. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  79. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  80. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  81. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  82. package/docs-site-docusaurus/docs/api/classes/Deque.md +72 -104
  83. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  84. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +67 -101
  85. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  86. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  87. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  88. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  89. package/docs-site-docusaurus/docs/api/classes/Heap.md +40 -68
  90. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +17 -17
  91. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +38 -38
  92. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +45 -45
  93. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  94. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +68 -96
  95. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  96. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  97. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +38 -66
  98. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +41 -74
  99. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +38 -66
  100. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +46 -79
  101. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +40 -68
  102. package/docs-site-docusaurus/docs/api/classes/Queue.md +54 -78
  103. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  104. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  105. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +68 -98
  106. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  107. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  108. package/docs-site-docusaurus/docs/api/classes/Stack.md +33 -53
  109. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  110. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +57 -124
  111. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +45 -116
  112. package/docs-site-docusaurus/docs/api/classes/Trie.md +37 -61
  113. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  114. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  115. package/package.json +1 -1
  116. package/src/data-structures/binary-tree/tree-multi-set.ts +15 -11
@@ -10,7 +10,6 @@
10
10
  import type { Comparator, TreeMultiSetOptions } from '../../types';
11
11
  export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
12
12
  #private;
13
- private _size;
14
13
  /**
15
14
  * Creates a new TreeMultiSet.
16
15
  * @param elements - Initial elements to add, or raw elements if `toElementFn` is provided.
@@ -25,16 +24,7 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
25
24
  * const mset = new TreeMultiSet<number, Item>(items, { toElementFn: item => item.score });
26
25
  */
27
26
  constructor(elements?: Iterable<R> | Iterable<K>, options?: TreeMultiSetOptions<K, R>);
28
- /**
29
- * Validates the key against the default comparator rules.
30
- * @remarks Time O(1), Space O(1)
31
- */
32
- private _validateKey;
33
- /**
34
- * Validates that count is a non-negative safe integer.
35
- * @remarks Time O(1), Space O(1)
36
- */
37
- private _validateCount;
27
+ private _size;
38
28
  /**
39
29
  * Total occurrences (sumCounts).
40
30
  * @remarks Time O(1), Space O(1)
@@ -43,1241 +33,116 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
43
33
  /**
44
34
  * Number of distinct keys.
45
35
  * @remarks Time O(1), Space O(1)
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
- * @example
80
- * // Unique key count
81
- * const ms = new TreeMultiSet<number>();
82
- * ms.add(1, 3);
83
- * ms.add(2, 2);
84
- * console.log(ms.distinctSize); // 2;
36
+ * @example
37
+ * // Unique key count
38
+ * const ms = new TreeMultiSet<number>();
39
+ * ms.add(1, 3);
40
+ * ms.add(2, 2);
41
+ * console.log(ms.distinctSize); // 2;
85
42
  */
86
43
  get distinctSize(): number;
44
+ /**
45
+ * Expose comparator for advanced usage/testing (read-only).
46
+ * @remarks Time O(1), Space O(1)
47
+ */
48
+ get comparator(): Comparator<K>;
87
49
  /**
88
50
  * Whether the multiset is empty.
89
51
  * @remarks Time O(1), Space O(1)
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
-
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
-
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
-
283
- * @example
284
- * // Check empty
285
- * console.log(new TreeMultiSet().isEmpty()); // true;
52
+ * @example
53
+ * // Check empty
54
+ * console.log(new TreeMultiSet().isEmpty()); // true;
286
55
  */
287
56
  isEmpty(): boolean;
288
57
  /**
289
58
  * Whether the multiset contains the given key.
290
59
  * @remarks Time O(log n), Space O(1)
291
-
292
-
293
-
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
-
340
-
341
-
342
-
343
-
344
-
345
-
346
-
347
-
348
-
349
-
350
-
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
-
402
-
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
- * @example
488
- * // Check existence
489
- * const ms = new TreeMultiSet<number>();
490
- * ms.add(1);
491
- * console.log(ms.has(1)); // true;
492
- * console.log(ms.has(2)); // false;
60
+ * @example
61
+ * // Check existence
62
+ * const ms = new TreeMultiSet<number>();
63
+ * ms.add(1);
64
+ * console.log(ms.has(1)); // true;
65
+ * console.log(ms.has(2)); // false;
493
66
  */
494
67
  has(key: K): boolean;
495
68
  /**
496
69
  * Returns the count of occurrences for the given key.
497
70
  * @remarks Time O(log n), Space O(1)
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
-
523
-
524
-
525
-
526
-
527
-
528
-
529
-
530
-
531
- * @example
532
- * // Get occurrence count
533
- * const ms = new TreeMultiSet<number>();
534
- * ms.add(1, 5);
535
- * console.log(ms.count(1)); // 5;
71
+ * @example
72
+ * // Get occurrence count
73
+ * const ms = new TreeMultiSet<number>();
74
+ * ms.add(1, 5);
75
+ * console.log(ms.count(1)); // 5;
536
76
  */
537
77
  count(key: K): number;
538
78
  /**
539
79
  * Add `n` occurrences of `key`.
540
80
  * @returns True if the multiset changed.
541
81
  * @remarks Time O(log n), Space O(1)
542
-
543
-
544
-
545
-
546
-
547
-
548
-
549
-
550
-
551
-
552
-
553
-
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
-
562
-
563
-
564
-
565
-
566
-
567
-
568
-
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
-
584
-
585
-
586
-
587
-
588
-
589
-
590
-
591
-
592
-
593
-
594
-
595
-
596
-
597
-
598
-
599
-
600
-
601
-
602
-
603
-
604
-
605
-
606
-
607
-
608
-
609
-
610
-
611
-
612
-
613
-
614
-
615
-
616
-
617
-
618
-
619
-
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
-
643
-
644
-
645
-
646
-
647
-
648
-
649
-
650
-
651
-
652
-
653
-
654
-
655
-
656
-
657
-
658
-
659
-
660
-
661
-
662
-
663
-
664
-
665
-
666
-
667
-
668
-
669
-
670
-
671
-
672
-
673
-
674
-
675
-
676
-
677
-
678
-
679
-
680
-
681
-
682
-
683
-
684
-
685
-
686
-
687
-
688
-
689
-
690
-
691
-
692
-
693
-
694
-
695
-
696
-
697
-
698
-
699
-
700
-
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
-
713
-
714
-
715
-
716
-
717
-
718
-
719
-
720
-
721
-
722
-
723
-
724
-
725
-
726
-
727
-
728
-
729
- * @example
730
- * // Add elements
731
- * const ms = new TreeMultiSet<number>();
732
- * ms.add(1);
733
- * ms.add(1);
734
- * ms.add(2);
735
- * console.log(ms.count(1)); // 2;
736
- * console.log(ms.size); // 3;
82
+ * @example
83
+ * // Add elements
84
+ * const ms = new TreeMultiSet<number>();
85
+ * ms.add(1);
86
+ * ms.add(1);
87
+ * ms.add(2);
88
+ * console.log(ms.count(1)); // 2;
89
+ * console.log(ms.size); // 3;
737
90
  */
738
91
  add(key: K, n?: number): boolean;
739
92
  /**
740
93
  * Set count for `key` to exactly `n`.
741
94
  * @returns True if changed.
742
95
  * @remarks Time O(log n), Space O(1)
743
-
744
-
745
-
746
-
747
-
748
-
749
-
750
-
751
-
752
-
753
-
754
-
755
-
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
-
767
-
768
-
769
-
770
-
771
-
772
-
773
-
774
-
775
-
776
- * @example
777
- * // Set occurrence count
778
- * const ms = new TreeMultiSet<number>();
779
- * ms.setCount(1, 3);
780
- * console.log(ms.count(1)); // 3;
96
+ * @example
97
+ * // Set occurrence count
98
+ * const ms = new TreeMultiSet<number>();
99
+ * ms.setCount(1, 3);
100
+ * console.log(ms.count(1)); // 3;
781
101
  */
782
102
  setCount(key: K, n: number): boolean;
783
103
  /**
784
104
  * Delete `n` occurrences of `key` (default 1).
785
105
  * @returns True if any occurrence was removed.
786
106
  * @remarks Time O(log n), Space O(1)
787
-
788
-
789
-
790
-
791
-
792
-
793
-
794
-
795
-
796
-
797
-
798
-
799
-
800
-
801
-
802
-
803
-
804
-
805
-
806
-
807
-
808
-
809
-
810
-
811
-
812
-
813
-
814
-
815
-
816
-
817
-
818
-
819
-
820
-
821
-
822
-
823
-
824
-
825
-
826
-
827
-
828
-
829
-
830
-
831
-
832
-
833
-
834
-
835
-
836
-
837
-
838
-
839
-
840
-
841
-
842
-
843
-
844
-
845
-
846
-
847
-
848
-
849
-
850
-
851
-
852
-
853
-
854
-
855
-
856
-
857
-
858
-
859
-
860
-
861
-
862
-
863
-
864
-
865
-
866
-
867
-
868
-
869
-
870
-
871
-
872
-
873
-
874
-
875
-
876
-
877
-
878
-
879
-
880
-
881
-
882
-
883
-
884
-
885
-
886
-
887
-
888
-
889
-
890
-
891
-
892
-
893
-
894
-
895
-
896
-
897
-
898
-
899
-
900
-
901
-
902
-
903
-
904
-
905
-
906
-
907
-
908
-
909
-
910
-
911
-
912
-
913
-
914
-
915
-
916
-
917
-
918
-
919
-
920
-
921
-
922
-
923
-
924
-
925
-
926
-
927
-
928
-
929
-
930
-
931
-
932
-
933
-
934
-
935
-
936
-
937
-
938
-
939
-
940
-
941
-
942
-
943
-
944
-
945
-
946
-
947
-
948
-
949
-
950
-
951
-
952
-
953
-
954
-
955
-
956
-
957
-
958
-
959
-
960
-
961
-
962
-
963
-
964
-
965
-
966
-
967
-
968
-
969
-
970
-
971
-
972
-
973
-
974
-
975
-
976
-
977
-
978
-
979
-
980
-
981
-
982
-
983
- * @example
984
- * // Remove one occurrence
985
- * const ms = new TreeMultiSet<number>();
986
- * ms.add(1, 3);
987
- * ms.delete(1);
988
- * console.log(ms.count(1)); // 2;
107
+ * @example
108
+ * // Remove one occurrence
109
+ * const ms = new TreeMultiSet<number>();
110
+ * ms.add(1, 3);
111
+ * ms.delete(1);
112
+ * console.log(ms.count(1)); // 2;
989
113
  */
990
114
  delete(key: K, n?: number): boolean;
991
115
  /**
992
116
  * Delete all occurrences of the given key.
993
117
  * @returns True if any occurrence was removed.
994
118
  * @remarks Time O(log n), Space O(1)
995
-
996
-
997
-
998
-
999
-
1000
-
1001
-
1002
-
1003
-
1004
-
1005
-
1006
-
1007
-
1008
-
1009
-
1010
-
1011
-
1012
-
1013
-
1014
-
1015
-
1016
-
1017
-
1018
-
1019
-
1020
-
1021
-
1022
-
1023
-
1024
-
1025
-
1026
-
1027
-
1028
- * @example
1029
- * // Remove all occurrences
1030
- * const ms = new TreeMultiSet<number>();
1031
- * ms.add(1, 3);
1032
- * ms.deleteAll(1);
1033
- * console.log(ms.has(1)); // false;
119
+ * @example
120
+ * // Remove all occurrences
121
+ * const ms = new TreeMultiSet<number>();
122
+ * ms.add(1, 3);
123
+ * ms.deleteAll(1);
124
+ * console.log(ms.has(1)); // false;
1034
125
  */
1035
126
  deleteAll(key: K): boolean;
1036
127
  /**
1037
128
  * Iterates over distinct keys (each key yielded once).
1038
129
  * @remarks Time O(n), Space O(1)
1039
-
1040
-
1041
-
1042
-
1043
-
1044
-
1045
-
1046
-
1047
-
1048
-
1049
-
1050
-
1051
-
1052
-
1053
-
1054
-
1055
-
1056
-
1057
-
1058
-
1059
-
1060
-
1061
-
1062
-
1063
-
1064
-
1065
-
1066
-
1067
-
1068
-
1069
-
1070
-
1071
-
1072
- * @example
1073
- * // Iterate unique keys
1074
- * const ms = new TreeMultiSet<number>();
1075
- * ms.add(1, 2);
1076
- * ms.add(2);
1077
- * console.log([...ms.keysDistinct()]); // [1, 2];
130
+ * @example
131
+ * // Iterate unique keys
132
+ * const ms = new TreeMultiSet<number>();
133
+ * ms.add(1, 2);
134
+ * ms.add(2);
135
+ * console.log([...ms.keysDistinct()]); // [1, 2];
1078
136
  */
1079
137
  keysDistinct(): IterableIterator<K>;
1080
138
  /**
1081
139
  * Iterates over entries as [key, count] pairs.
1082
140
  * @remarks Time O(n), Space O(1)
1083
-
1084
-
1085
-
1086
-
1087
-
1088
-
1089
-
1090
-
1091
-
1092
-
1093
-
1094
-
1095
-
1096
-
1097
-
1098
-
1099
-
1100
-
1101
-
1102
-
1103
-
1104
-
1105
-
1106
-
1107
-
1108
-
1109
-
1110
-
1111
-
1112
-
1113
-
1114
-
1115
-
1116
-
1117
-
1118
-
1119
-
1120
-
1121
-
1122
-
1123
-
1124
-
1125
-
1126
-
1127
-
1128
-
1129
-
1130
-
1131
-
1132
-
1133
-
1134
-
1135
-
1136
-
1137
-
1138
-
1139
-
1140
-
1141
-
1142
-
1143
-
1144
-
1145
-
1146
-
1147
-
1148
-
1149
-
1150
-
1151
-
1152
-
1153
-
1154
-
1155
-
1156
-
1157
-
1158
-
1159
-
1160
-
1161
-
1162
-
1163
-
1164
-
1165
-
1166
-
1167
-
1168
-
1169
-
1170
-
1171
-
1172
-
1173
-
1174
-
1175
-
1176
-
1177
-
1178
-
1179
-
1180
-
1181
-
1182
-
1183
-
1184
-
1185
-
1186
-
1187
-
1188
-
1189
-
1190
-
1191
-
1192
-
1193
-
1194
-
1195
-
1196
-
1197
-
1198
-
1199
-
1200
-
1201
-
1202
-
1203
-
1204
-
1205
-
1206
-
1207
-
1208
-
1209
-
1210
-
1211
-
1212
-
1213
-
1214
-
1215
-
1216
-
1217
-
1218
-
1219
-
1220
-
1221
-
1222
-
1223
-
1224
-
1225
-
1226
-
1227
-
1228
-
1229
-
1230
-
1231
-
1232
-
1233
-
1234
-
1235
-
1236
-
1237
-
1238
-
1239
-
1240
-
1241
-
1242
-
1243
-
1244
-
1245
-
1246
-
1247
-
1248
-
1249
-
1250
-
1251
-
1252
-
1253
-
1254
-
1255
-
1256
-
1257
-
1258
-
1259
-
1260
-
1261
-
1262
-
1263
-
1264
-
1265
-
1266
-
1267
-
1268
-
1269
-
1270
-
1271
-
1272
-
1273
-
1274
-
1275
-
1276
- * @example
1277
- * // Iterate entries
1278
- * const ms = new TreeMultiSet<number>();
1279
- * ms.add(1, 2);
1280
- * console.log([...ms.entries()].length); // > 0;
141
+ * @example
142
+ * // Iterate entries
143
+ * const ms = new TreeMultiSet<number>();
144
+ * ms.add(1, 2);
145
+ * console.log([...ms.entries()].length); // > 0;
1281
146
  */
1282
147
  entries(): IterableIterator<[K, number]>;
1283
148
  /**
@@ -1288,2209 +153,220 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
1288
153
  /**
1289
154
  * Iterate over all elements with multiplicity (Set-compatible, alias for `[Symbol.iterator]`).
1290
155
  * @remarks Each key is yielded `count(key)` times. Time O(size), Space O(1) per step.
1291
-
1292
-
1293
-
1294
-
1295
-
1296
-
1297
-
1298
-
1299
- * @example
1300
- * // Iterate with multiplicity
1301
- * const ms = new TreeMultiSet<number>();
1302
- * ms.add(1); ms.add(1); ms.add(2); ms.add(3); ms.add(3); ms.add(3);
1303
- * console.log([...ms.keys()]); // [1, 1, 2, 3, 3, 3];
156
+ * @example
157
+ * // Iterate with multiplicity
158
+ * const ms = new TreeMultiSet<number>();
159
+ * ms.add(1);
160
+ * ms.add(1);
161
+ * ms.add(2);
162
+ * ms.add(3);
163
+ * ms.add(3);
164
+ * ms.add(3);
165
+ * console.log([...ms.keys()]); // [1, 1, 2, 3, 3, 3];
1304
166
  */
1305
167
  keys(): IterableIterator<K>;
1306
168
  /**
1307
169
  * Iterate over all elements with multiplicity (Set-compatible, alias for `[Symbol.iterator]`).
1308
170
  * @remarks Each key is yielded `count(key)` times. Time O(size), Space O(1) per step.
1309
-
1310
-
1311
-
1312
-
1313
-
1314
-
1315
-
1316
-
1317
- * @example
1318
- * // Iterate with multiplicity
1319
- * const ms = new TreeMultiSet<number>();
1320
- * ms.add(5); ms.add(5); ms.add(10);
1321
- * console.log([...ms.values()]); // [5, 5, 10];
171
+ * @example
172
+ * // Iterate with multiplicity
173
+ * const ms = new TreeMultiSet<number>();
174
+ * ms.add(5);
175
+ * ms.add(5);
176
+ * ms.add(10);
177
+ * console.log([...ms.values()]); // [5, 5, 10];
1322
178
  */
1323
179
  values(): IterableIterator<K>;
1324
180
  /**
1325
181
  * Returns an array with all elements (expanded).
1326
182
  * @remarks Time O(size), Space O(size)
1327
-
1328
-
1329
-
1330
-
1331
-
1332
-
1333
-
1334
-
1335
-
1336
-
1337
-
1338
-
1339
-
1340
-
1341
-
1342
-
1343
-
1344
-
1345
-
1346
-
1347
-
1348
-
1349
-
1350
-
1351
-
1352
-
1353
-
1354
-
1355
-
1356
-
1357
-
1358
-
1359
-
1360
-
1361
-
1362
-
1363
-
1364
-
1365
-
1366
-
1367
-
1368
-
1369
-
1370
-
1371
-
1372
-
1373
-
1374
-
1375
-
1376
-
1377
-
1378
-
1379
-
1380
-
1381
-
1382
-
1383
-
1384
-
1385
-
1386
-
1387
-
1388
-
1389
-
1390
-
1391
-
1392
-
1393
-
1394
-
1395
-
1396
-
1397
-
1398
-
1399
-
1400
-
1401
-
1402
-
1403
-
1404
-
1405
-
1406
-
1407
-
1408
-
1409
-
1410
-
1411
-
1412
-
1413
-
1414
-
1415
-
1416
-
1417
-
1418
-
1419
-
1420
-
1421
-
1422
-
1423
-
1424
-
1425
-
1426
-
1427
-
1428
-
1429
-
1430
-
1431
-
1432
-
1433
-
1434
-
1435
-
1436
-
1437
-
1438
-
1439
-
1440
-
1441
-
1442
-
1443
-
1444
-
1445
-
1446
-
1447
-
1448
-
1449
-
1450
-
1451
-
1452
-
1453
-
1454
-
1455
-
1456
-
1457
-
1458
-
1459
-
1460
-
1461
-
1462
-
1463
-
1464
-
1465
-
1466
-
1467
-
1468
-
1469
-
1470
-
1471
-
1472
-
1473
-
1474
-
1475
-
1476
-
1477
-
1478
-
1479
-
1480
-
1481
-
1482
-
1483
-
1484
-
1485
-
1486
-
1487
-
1488
-
1489
-
1490
-
1491
-
1492
-
1493
-
1494
-
1495
-
1496
-
1497
-
1498
-
1499
-
1500
-
1501
-
1502
-
1503
-
1504
-
1505
-
1506
-
1507
-
1508
-
1509
-
1510
-
1511
-
1512
-
1513
-
1514
-
1515
-
1516
-
1517
-
1518
-
1519
-
1520
- * @example
1521
- * // All elements (with duplicates)
1522
- * const ms = new TreeMultiSet<number>();
1523
- * ms.add(1, 2);
1524
- * ms.add(2);
1525
- * console.log(ms.toArray()); // [1, 1, 2];
183
+ * @example
184
+ * // All elements (with duplicates)
185
+ * const ms = new TreeMultiSet<number>();
186
+ * ms.add(1, 2);
187
+ * ms.add(2);
188
+ * console.log(ms.toArray()); // [1, 1, 2];
1526
189
  */
1527
190
  toArray(): K[];
1528
191
  /**
1529
192
  * Returns an array with distinct keys only.
1530
193
  * @remarks Time O(n), Space O(n)
1531
-
1532
-
1533
-
1534
-
1535
-
1536
-
1537
-
1538
-
1539
-
1540
-
1541
-
1542
-
1543
-
1544
-
1545
-
1546
-
1547
-
1548
-
1549
-
1550
-
1551
-
1552
-
1553
-
1554
-
1555
-
1556
-
1557
-
1558
-
1559
-
1560
-
1561
-
1562
-
1563
-
1564
- * @example
1565
- * // Unique keys only
1566
- * const ms = new TreeMultiSet<number>();
1567
- * ms.add(1, 3);
1568
- * ms.add(2);
1569
- * console.log(ms.toDistinctArray()); // [1, 2];
194
+ * @example
195
+ * // Unique keys only
196
+ * const ms = new TreeMultiSet<number>();
197
+ * ms.add(1, 3);
198
+ * ms.add(2);
199
+ * console.log(ms.toDistinctArray()); // [1, 2];
1570
200
  */
1571
201
  toDistinctArray(): K[];
1572
202
  /**
1573
203
  * Returns an array of [key, count] entries.
1574
204
  * @remarks Time O(n), Space O(n)
1575
-
1576
-
1577
-
1578
-
1579
-
1580
-
1581
-
1582
-
1583
-
1584
-
1585
-
1586
-
1587
-
1588
-
1589
-
1590
-
1591
-
1592
-
1593
-
1594
-
1595
-
1596
-
1597
-
1598
-
1599
-
1600
-
1601
-
1602
-
1603
-
1604
-
1605
-
1606
-
1607
-
1608
- * @example
1609
- * // Key-count pairs
1610
- * const ms = new TreeMultiSet<number>();
1611
- * ms.add(1, 2);
1612
- * ms.add(3);
1613
- * console.log(ms.toEntries()); // [[1, 2], [3, 1]];
205
+ * @example
206
+ * // Key-count pairs
207
+ * const ms = new TreeMultiSet<number>();
208
+ * ms.add(1, 2);
209
+ * ms.add(3);
210
+ * console.log(ms.toEntries()); // [
211
+ * // [1, 2],
212
+ * // [3, 1]
213
+ * // ];
1614
214
  */
1615
215
  toEntries(): Array<[K, number]>;
1616
- /**
1617
- * Expose comparator for advanced usage/testing (read-only).
1618
- * @remarks Time O(1), Space O(1)
1619
- */
1620
- get comparator(): Comparator<K>;
1621
216
  /**
1622
217
  * Remove all elements from the multiset.
1623
218
  * @remarks Time O(1), Space O(1)
1624
-
1625
-
1626
-
1627
-
1628
-
1629
-
1630
-
1631
-
1632
-
1633
-
1634
-
1635
-
1636
-
1637
-
1638
-
1639
-
1640
-
1641
-
1642
-
1643
-
1644
-
1645
-
1646
-
1647
-
1648
-
1649
-
1650
-
1651
-
1652
-
1653
-
1654
-
1655
-
1656
-
1657
-
1658
-
1659
-
1660
-
1661
-
1662
-
1663
-
1664
-
1665
-
1666
-
1667
-
1668
-
1669
-
1670
-
1671
-
1672
-
1673
-
1674
-
1675
-
1676
-
1677
-
1678
-
1679
-
1680
-
1681
-
1682
-
1683
-
1684
-
1685
-
1686
-
1687
-
1688
-
1689
-
1690
-
1691
-
1692
-
1693
-
1694
-
1695
-
1696
-
1697
-
1698
-
1699
-
1700
-
1701
-
1702
-
1703
-
1704
-
1705
-
1706
-
1707
-
1708
-
1709
-
1710
-
1711
-
1712
-
1713
-
1714
-
1715
-
1716
-
1717
-
1718
-
1719
-
1720
-
1721
-
1722
-
1723
-
1724
-
1725
-
1726
-
1727
-
1728
-
1729
-
1730
-
1731
-
1732
-
1733
-
1734
-
1735
-
1736
-
1737
-
1738
-
1739
-
1740
-
1741
-
1742
-
1743
-
1744
-
1745
-
1746
-
1747
-
1748
-
1749
-
1750
-
1751
-
1752
-
1753
-
1754
-
1755
-
1756
-
1757
-
1758
-
1759
-
1760
-
1761
-
1762
-
1763
-
1764
-
1765
-
1766
-
1767
-
1768
-
1769
-
1770
-
1771
-
1772
-
1773
-
1774
-
1775
-
1776
-
1777
-
1778
-
1779
-
1780
-
1781
-
1782
-
1783
-
1784
-
1785
-
1786
-
1787
-
1788
-
1789
-
1790
-
1791
-
1792
-
1793
-
1794
-
1795
-
1796
-
1797
-
1798
-
1799
-
1800
-
1801
-
1802
-
1803
-
1804
-
1805
-
1806
-
1807
-
1808
-
1809
-
1810
-
1811
-
1812
-
1813
-
1814
-
1815
-
1816
-
1817
-
1818
- * @example
1819
- * // Remove all
1820
- * const ms = new TreeMultiSet<number>();
1821
- * ms.add(1);
1822
- * ms.clear();
1823
- * console.log(ms.isEmpty()); // true;
219
+ * @example
220
+ * // Remove all
221
+ * const ms = new TreeMultiSet<number>();
222
+ * ms.add(1);
223
+ * ms.clear();
224
+ * console.log(ms.isEmpty()); // true;
1824
225
  */
1825
226
  clear(): void;
1826
227
  /**
1827
228
  * Returns the smallest key, or undefined if empty.
1828
229
  * @remarks Time O(log n), Space O(1)
1829
-
1830
-
1831
-
1832
-
1833
-
1834
-
1835
-
1836
-
1837
-
1838
-
1839
-
1840
-
1841
-
1842
-
1843
-
1844
-
1845
-
1846
-
1847
-
1848
-
1849
-
1850
-
1851
-
1852
-
1853
-
1854
-
1855
-
1856
-
1857
-
1858
-
1859
-
1860
-
1861
-
1862
-
1863
- * @example
1864
- * // Smallest element
1865
- * const ms = new TreeMultiSet<number>();
1866
- * ms.add(3);
1867
- * ms.add(1);
1868
- * console.log(ms.first()); // 1;
230
+ * @example
231
+ * // Smallest element
232
+ * const ms = new TreeMultiSet<number>();
233
+ * ms.add(3);
234
+ * ms.add(1);
235
+ * console.log(ms.first()); // 1;
1869
236
  */
1870
237
  first(): K | undefined;
1871
238
  /**
1872
239
  * Returns the largest key, or undefined if empty.
1873
240
  * @remarks Time O(log n), Space O(1)
1874
-
1875
-
1876
-
1877
-
1878
-
1879
-
1880
-
1881
-
1882
-
1883
-
1884
-
1885
-
1886
-
1887
-
1888
-
1889
-
1890
-
1891
-
1892
-
1893
-
1894
-
1895
-
1896
-
1897
-
1898
-
1899
-
1900
-
1901
-
1902
-
1903
-
1904
-
1905
-
1906
-
1907
-
1908
- * @example
1909
- * // Largest element
1910
- * const ms = new TreeMultiSet<number>();
1911
- * ms.add(1);
1912
- * ms.add(3);
1913
- * console.log(ms.last()); // 3;
241
+ * @example
242
+ * // Largest element
243
+ * const ms = new TreeMultiSet<number>();
244
+ * ms.add(1);
245
+ * ms.add(3);
246
+ * console.log(ms.last()); // 3;
1914
247
  */
1915
248
  last(): K | undefined;
1916
249
  /**
1917
250
  * Removes all occurrences of the smallest key and returns it.
1918
251
  * @remarks Time O(log n), Space O(1)
1919
-
1920
-
1921
-
1922
-
1923
-
1924
-
1925
-
1926
-
1927
-
1928
-
1929
-
1930
-
1931
-
1932
-
1933
-
1934
-
1935
-
1936
-
1937
-
1938
-
1939
-
1940
-
1941
-
1942
-
1943
-
1944
-
1945
-
1946
-
1947
-
1948
-
1949
-
1950
-
1951
-
1952
-
1953
- * @example
1954
- * // Remove and return smallest
1955
- * const ms = new TreeMultiSet<number>();
1956
- * ms.add(2);
1957
- * ms.add(1);
1958
- * console.log(ms.pollFirst()); // 1;
1959
- * console.log(ms.has(1)); // false;
252
+ * @example
253
+ * // Remove and return smallest
254
+ * const ms = new TreeMultiSet<number>();
255
+ * ms.add(2);
256
+ * ms.add(1);
257
+ * console.log(ms.pollFirst()); // 1;
258
+ * console.log(ms.has(1)); // false;
1960
259
  */
1961
260
  pollFirst(): K | undefined;
1962
261
  /**
1963
262
  * Removes all occurrences of the largest key and returns it.
1964
263
  * @remarks Time O(log n), Space O(1)
1965
-
1966
-
1967
-
1968
-
1969
-
1970
-
1971
-
1972
-
1973
-
1974
-
1975
-
1976
-
1977
-
1978
-
1979
-
1980
-
1981
-
1982
-
1983
-
1984
-
1985
-
1986
-
1987
-
1988
-
1989
-
1990
-
1991
-
1992
-
1993
-
1994
-
1995
-
1996
-
1997
-
1998
-
1999
- * @example
2000
- * // Remove and return largest
2001
- * const ms = new TreeMultiSet<number>();
2002
- * ms.add(1);
2003
- * ms.add(3);
2004
- * console.log(ms.pollLast()); // 3;
264
+ * @example
265
+ * // Remove and return largest
266
+ * const ms = new TreeMultiSet<number>();
267
+ * ms.add(1);
268
+ * ms.add(3);
269
+ * console.log(ms.pollLast()); // 3;
2005
270
  */
2006
271
  pollLast(): K | undefined;
2007
272
  /**
2008
273
  * Returns the smallest key >= given key, or undefined.
2009
274
  * @remarks Time O(log n), Space O(1)
2010
-
2011
-
2012
-
2013
-
2014
-
2015
-
2016
-
2017
-
2018
-
2019
-
2020
-
2021
-
2022
-
2023
-
2024
-
2025
-
2026
-
2027
-
2028
-
2029
-
2030
-
2031
-
2032
-
2033
-
2034
-
2035
-
2036
-
2037
-
2038
-
2039
-
2040
-
2041
-
2042
-
2043
-
2044
-
2045
-
2046
-
2047
-
2048
-
2049
-
2050
-
2051
-
2052
-
2053
-
2054
-
2055
-
2056
-
2057
-
2058
-
2059
-
2060
-
2061
-
2062
-
2063
-
2064
-
2065
-
2066
-
2067
-
2068
-
2069
-
2070
-
2071
-
2072
-
2073
-
2074
-
2075
-
2076
-
2077
-
2078
-
2079
-
2080
-
2081
-
2082
-
2083
-
2084
-
2085
-
2086
-
2087
-
2088
-
2089
-
2090
-
2091
-
2092
-
2093
-
2094
-
2095
-
2096
-
2097
-
2098
-
2099
-
2100
-
2101
-
2102
-
2103
-
2104
-
2105
-
2106
-
2107
-
2108
-
2109
-
2110
-
2111
-
2112
-
2113
-
2114
-
2115
-
2116
-
2117
-
2118
-
2119
-
2120
-
2121
-
2122
-
2123
-
2124
-
2125
-
2126
-
2127
-
2128
-
2129
-
2130
-
2131
-
2132
-
2133
-
2134
-
2135
-
2136
-
2137
-
2138
-
2139
-
2140
-
2141
-
2142
-
2143
-
2144
-
2145
-
2146
-
2147
-
2148
-
2149
-
2150
-
2151
-
2152
-
2153
-
2154
-
2155
-
2156
-
2157
-
2158
-
2159
-
2160
-
2161
-
2162
-
2163
-
2164
- * @example
2165
- * // Least key ≥ target
2166
- * const ms = new TreeMultiSet<number>();
2167
- * ms.add(10);
2168
- * ms.add(20);
2169
- * ms.add(30);
2170
- * console.log(ms.ceiling(15)); // 20;
275
+ * @example
276
+ * // Least key ≥ target
277
+ * const ms = new TreeMultiSet<number>();
278
+ * ms.add(10);
279
+ * ms.add(20);
280
+ * ms.add(30);
281
+ * console.log(ms.ceiling(15)); // 20;
2171
282
  */
2172
283
  ceiling(key: K): K | undefined;
2173
284
  /**
2174
285
  * Returns the largest key <= given key, or undefined.
2175
286
  * @remarks Time O(log n), Space O(1)
2176
-
2177
-
2178
-
2179
-
2180
-
2181
-
2182
-
2183
-
2184
-
2185
-
2186
-
2187
-
2188
-
2189
-
2190
-
2191
-
2192
-
2193
-
2194
-
2195
-
2196
-
2197
-
2198
-
2199
-
2200
-
2201
-
2202
-
2203
-
2204
-
2205
-
2206
-
2207
-
2208
-
2209
-
2210
-
2211
-
2212
-
2213
-
2214
-
2215
-
2216
-
2217
-
2218
-
2219
-
2220
-
2221
-
2222
-
2223
-
2224
-
2225
-
2226
-
2227
-
2228
-
2229
-
2230
-
2231
-
2232
-
2233
-
2234
-
2235
-
2236
-
2237
-
2238
-
2239
-
2240
-
2241
-
2242
-
2243
-
2244
-
2245
-
2246
-
2247
-
2248
-
2249
-
2250
-
2251
-
2252
-
2253
-
2254
-
2255
-
2256
-
2257
-
2258
-
2259
-
2260
-
2261
-
2262
-
2263
-
2264
-
2265
-
2266
-
2267
-
2268
-
2269
-
2270
-
2271
-
2272
-
2273
-
2274
-
2275
-
2276
-
2277
-
2278
-
2279
-
2280
-
2281
-
2282
-
2283
-
2284
-
2285
-
2286
-
2287
-
2288
-
2289
-
2290
-
2291
-
2292
-
2293
-
2294
-
2295
-
2296
-
2297
-
2298
-
2299
-
2300
-
2301
-
2302
-
2303
-
2304
-
2305
-
2306
-
2307
-
2308
-
2309
-
2310
-
2311
-
2312
-
2313
-
2314
-
2315
-
2316
-
2317
-
2318
-
2319
-
2320
-
2321
-
2322
-
2323
-
2324
-
2325
-
2326
-
2327
-
2328
-
2329
-
2330
- * @example
2331
- * // Greatest key ≤ target
2332
- * const ms = new TreeMultiSet<number>();
2333
- * ms.add(10);
2334
- * ms.add(20);
2335
- * ms.add(30);
2336
- * console.log(ms.floor(25)); // 20;
287
+ * @example
288
+ * // Greatest key ≤ target
289
+ * const ms = new TreeMultiSet<number>();
290
+ * ms.add(10);
291
+ * ms.add(20);
292
+ * ms.add(30);
293
+ * console.log(ms.floor(25)); // 20;
2337
294
  */
2338
295
  floor(key: K): K | undefined;
2339
296
  /**
2340
297
  * Returns the smallest key > given key, or undefined.
2341
298
  * @remarks Time O(log n), Space O(1)
2342
-
2343
-
2344
-
2345
-
2346
-
2347
-
2348
-
2349
-
2350
-
2351
-
2352
-
2353
-
2354
-
2355
-
2356
-
2357
-
2358
-
2359
-
2360
-
2361
-
2362
-
2363
-
2364
-
2365
-
2366
-
2367
-
2368
-
2369
-
2370
-
2371
-
2372
-
2373
-
2374
-
2375
-
2376
-
2377
-
2378
-
2379
-
2380
-
2381
-
2382
-
2383
-
2384
-
2385
-
2386
-
2387
-
2388
-
2389
-
2390
-
2391
-
2392
-
2393
-
2394
-
2395
-
2396
-
2397
-
2398
-
2399
-
2400
-
2401
-
2402
-
2403
-
2404
-
2405
-
2406
-
2407
-
2408
-
2409
-
2410
-
2411
-
2412
-
2413
-
2414
-
2415
-
2416
-
2417
-
2418
-
2419
-
2420
-
2421
-
2422
-
2423
-
2424
-
2425
-
2426
-
2427
-
2428
-
2429
-
2430
-
2431
-
2432
-
2433
-
2434
-
2435
-
2436
-
2437
-
2438
-
2439
-
2440
-
2441
-
2442
-
2443
-
2444
-
2445
-
2446
-
2447
-
2448
-
2449
-
2450
-
2451
-
2452
-
2453
-
2454
-
2455
-
2456
-
2457
-
2458
-
2459
-
2460
-
2461
-
2462
-
2463
-
2464
-
2465
-
2466
-
2467
-
2468
-
2469
-
2470
-
2471
-
2472
-
2473
-
2474
-
2475
-
2476
-
2477
-
2478
-
2479
-
2480
-
2481
-
2482
-
2483
-
2484
-
2485
-
2486
-
2487
-
2488
-
2489
-
2490
-
2491
-
2492
-
2493
-
2494
-
2495
-
2496
- * @example
2497
- * // Least key > target
2498
- * const ms = new TreeMultiSet<number>();
2499
- * ms.add(10);
2500
- * ms.add(20);
2501
- * console.log(ms.higher(10)); // 20;
299
+ * @example
300
+ * // Least key > target
301
+ * const ms = new TreeMultiSet<number>();
302
+ * ms.add(10);
303
+ * ms.add(20);
304
+ * console.log(ms.higher(10)); // 20;
2502
305
  */
2503
306
  higher(key: K): K | undefined;
2504
307
  /**
2505
308
  * Returns the largest key < given key, or undefined.
2506
309
  * @remarks Time O(log n), Space O(1)
2507
-
2508
-
2509
-
2510
-
2511
-
2512
-
2513
-
2514
-
2515
-
2516
-
2517
-
2518
-
2519
-
2520
-
2521
-
2522
-
2523
-
2524
-
2525
-
2526
-
2527
-
2528
-
2529
-
2530
-
2531
-
2532
-
2533
-
2534
-
2535
-
2536
-
2537
-
2538
-
2539
-
2540
-
2541
-
2542
-
2543
-
2544
-
2545
-
2546
-
2547
-
2548
-
2549
-
2550
-
2551
-
2552
-
2553
-
2554
-
2555
-
2556
-
2557
-
2558
-
2559
-
2560
-
2561
-
2562
-
2563
-
2564
-
2565
-
2566
-
2567
-
2568
-
2569
-
2570
-
2571
-
2572
-
2573
-
2574
-
2575
-
2576
-
2577
-
2578
-
2579
-
2580
-
2581
-
2582
-
2583
-
2584
-
2585
-
2586
-
2587
-
2588
-
2589
-
2590
-
2591
-
2592
-
2593
-
2594
-
2595
-
2596
-
2597
-
2598
-
2599
-
2600
-
2601
-
2602
-
2603
-
2604
-
2605
-
2606
-
2607
-
2608
-
2609
-
2610
-
2611
-
2612
-
2613
-
2614
-
2615
-
2616
-
2617
-
2618
-
2619
-
2620
-
2621
-
2622
-
2623
-
2624
-
2625
-
2626
-
2627
-
2628
-
2629
-
2630
-
2631
-
2632
-
2633
-
2634
-
2635
-
2636
-
2637
-
2638
-
2639
-
2640
-
2641
-
2642
-
2643
-
2644
-
2645
-
2646
-
2647
-
2648
-
2649
-
2650
-
2651
-
2652
-
2653
-
2654
-
2655
-
2656
-
2657
-
2658
-
2659
-
2660
-
2661
- * @example
2662
- * // Greatest key < target
2663
- * const ms = new TreeMultiSet<number>();
2664
- * ms.add(10);
2665
- * ms.add(20);
2666
- * console.log(ms.lower(20)); // 10;
310
+ * @example
311
+ * // Greatest key < target
312
+ * const ms = new TreeMultiSet<number>();
313
+ * ms.add(10);
314
+ * ms.add(20);
315
+ * console.log(ms.lower(20)); // 10;
2667
316
  */
2668
317
  lower(key: K): K | undefined;
2669
318
  /**
2670
319
  * Iterates over distinct keys with their counts.
2671
320
  * @remarks Time O(n), Space O(1)
2672
-
2673
-
2674
-
2675
-
2676
-
2677
-
2678
-
2679
-
2680
-
2681
-
2682
-
2683
-
2684
-
2685
-
2686
-
2687
-
2688
-
2689
-
2690
-
2691
-
2692
-
2693
-
2694
-
2695
-
2696
-
2697
-
2698
-
2699
-
2700
-
2701
-
2702
-
2703
-
2704
-
2705
-
2706
-
2707
-
2708
-
2709
-
2710
-
2711
-
2712
-
2713
-
2714
-
2715
-
2716
-
2717
-
2718
-
2719
-
2720
-
2721
-
2722
-
2723
-
2724
-
2725
-
2726
-
2727
-
2728
-
2729
-
2730
-
2731
-
2732
-
2733
-
2734
-
2735
-
2736
-
2737
-
2738
-
2739
-
2740
-
2741
-
2742
-
2743
-
2744
-
2745
-
2746
-
2747
-
2748
-
2749
-
2750
-
2751
-
2752
-
2753
-
2754
-
2755
-
2756
-
2757
-
2758
-
2759
-
2760
-
2761
-
2762
-
2763
-
2764
-
2765
-
2766
-
2767
-
2768
-
2769
-
2770
-
2771
-
2772
-
2773
-
2774
-
2775
-
2776
-
2777
-
2778
-
2779
-
2780
-
2781
-
2782
-
2783
-
2784
-
2785
-
2786
-
2787
-
2788
-
2789
-
2790
-
2791
-
2792
-
2793
-
2794
-
2795
-
2796
-
2797
-
2798
-
2799
-
2800
-
2801
-
2802
-
2803
-
2804
-
2805
-
2806
-
2807
-
2808
-
2809
-
2810
-
2811
-
2812
-
2813
-
2814
-
2815
-
2816
-
2817
-
2818
-
2819
-
2820
-
2821
-
2822
-
2823
-
2824
-
2825
-
2826
-
2827
-
2828
-
2829
-
2830
-
2831
-
2832
-
2833
-
2834
-
2835
-
2836
-
2837
-
2838
-
2839
-
2840
-
2841
-
2842
-
2843
-
2844
-
2845
-
2846
-
2847
-
2848
-
2849
-
2850
-
2851
-
2852
-
2853
-
2854
-
2855
-
2856
-
2857
-
2858
-
2859
-
2860
-
2861
-
2862
-
2863
-
2864
-
2865
-
2866
- * @example
2867
- * // Iterate
2868
- * const ms = new TreeMultiSet<number>();
2869
- * ms.add(1, 2);
2870
- * ms.add(2);
2871
- * const pairs: [number, number][] = [];
2872
- * ms.forEach((k, c) => pairs.push([k, c]));
2873
- * console.log(pairs); // [[1, 2], [2, 1]];
321
+ * @example
322
+ * // Iterate
323
+ * const ms = new TreeMultiSet<number>();
324
+ * ms.add(1, 2);
325
+ * ms.add(2);
326
+ * const pairs: [number, number][] = [];
327
+ * ms.forEach((k, c) => pairs.push([k, c]));
328
+ * console.log(pairs); // [
329
+ * // [1, 2],
330
+ * // [2, 1]
331
+ * // ];
2874
332
  */
2875
333
  forEach(callback: (key: K, count: number) => void): void;
2876
334
  /**
2877
335
  * Creates a new TreeMultiSet with entries that match the predicate.
2878
336
  * @remarks Time O(n log n), Space O(n)
2879
-
2880
-
2881
-
2882
-
2883
-
2884
-
2885
-
2886
-
2887
-
2888
-
2889
-
2890
-
2891
-
2892
-
2893
-
2894
-
2895
-
2896
-
2897
-
2898
-
2899
-
2900
-
2901
-
2902
-
2903
-
2904
-
2905
-
2906
-
2907
-
2908
-
2909
-
2910
-
2911
-
2912
-
2913
-
2914
-
2915
-
2916
-
2917
-
2918
-
2919
-
2920
-
2921
-
2922
-
2923
-
2924
-
2925
-
2926
-
2927
-
2928
-
2929
-
2930
-
2931
-
2932
-
2933
-
2934
-
2935
-
2936
-
2937
-
2938
-
2939
-
2940
-
2941
-
2942
-
2943
-
2944
-
2945
-
2946
-
2947
-
2948
-
2949
-
2950
-
2951
-
2952
-
2953
-
2954
-
2955
-
2956
-
2957
-
2958
-
2959
-
2960
-
2961
-
2962
-
2963
-
2964
-
2965
-
2966
-
2967
-
2968
-
2969
-
2970
-
2971
-
2972
-
2973
-
2974
-
2975
-
2976
-
2977
-
2978
-
2979
-
2980
-
2981
-
2982
-
2983
-
2984
-
2985
-
2986
-
2987
-
2988
-
2989
-
2990
-
2991
-
2992
-
2993
-
2994
-
2995
-
2996
-
2997
-
2998
-
2999
-
3000
-
3001
-
3002
-
3003
-
3004
-
3005
-
3006
-
3007
-
3008
-
3009
-
3010
-
3011
-
3012
-
3013
-
3014
-
3015
-
3016
-
3017
-
3018
-
3019
-
3020
-
3021
-
3022
-
3023
-
3024
-
3025
-
3026
-
3027
-
3028
-
3029
-
3030
-
3031
-
3032
-
3033
-
3034
-
3035
-
3036
-
3037
-
3038
-
3039
-
3040
-
3041
-
3042
-
3043
-
3044
-
3045
-
3046
-
3047
-
3048
-
3049
-
3050
-
3051
-
3052
-
3053
-
3054
-
3055
-
3056
-
3057
-
3058
-
3059
-
3060
-
3061
-
3062
-
3063
-
3064
-
3065
-
3066
-
3067
-
3068
-
3069
-
3070
-
3071
-
3072
-
3073
- * @example
3074
- * // Filter
3075
- * const ms = new TreeMultiSet<number>();
3076
- * ms.add(1, 3);
3077
- * ms.add(2, 1);
3078
- * ms.add(3, 2);
3079
- * const filtered = ms.filter((k, c) => c > 1);
3080
- * console.log([...filtered.keysDistinct()]); // [1, 3];
337
+ * @example
338
+ * // Filter
339
+ * const ms = new TreeMultiSet<number>();
340
+ * ms.add(1, 3);
341
+ * ms.add(2, 1);
342
+ * ms.add(3, 2);
343
+ * const filtered = ms.filter((k, c) => c > 1);
344
+ * console.log([...filtered.keysDistinct()]); // [1, 3];
3081
345
  */
3082
346
  filter(predicate: (key: K, count: number) => boolean): TreeMultiSet<K>;
3083
347
  /**
3084
348
  * Reduces the multiset to a single value.
3085
349
  * @remarks Time O(n), Space O(1)
3086
-
3087
-
3088
-
3089
-
3090
-
3091
-
3092
-
3093
-
3094
-
3095
-
3096
-
3097
-
3098
-
3099
-
3100
-
3101
-
3102
-
3103
-
3104
-
3105
-
3106
-
3107
-
3108
-
3109
-
3110
-
3111
-
3112
-
3113
-
3114
-
3115
-
3116
-
3117
-
3118
-
3119
-
3120
-
3121
-
3122
-
3123
-
3124
-
3125
-
3126
-
3127
-
3128
-
3129
-
3130
-
3131
-
3132
-
3133
-
3134
-
3135
-
3136
-
3137
-
3138
-
3139
-
3140
-
3141
-
3142
-
3143
-
3144
-
3145
-
3146
-
3147
-
3148
-
3149
-
3150
-
3151
-
3152
-
3153
-
3154
-
3155
-
3156
-
3157
-
3158
-
3159
-
3160
-
3161
-
3162
-
3163
-
3164
-
3165
-
3166
-
3167
-
3168
-
3169
-
3170
-
3171
-
3172
-
3173
-
3174
-
3175
-
3176
-
3177
-
3178
-
3179
-
3180
-
3181
-
3182
-
3183
-
3184
-
3185
-
3186
-
3187
-
3188
-
3189
-
3190
-
3191
-
3192
-
3193
-
3194
-
3195
-
3196
-
3197
-
3198
-
3199
-
3200
-
3201
-
3202
-
3203
-
3204
-
3205
-
3206
-
3207
-
3208
-
3209
-
3210
-
3211
-
3212
-
3213
-
3214
-
3215
-
3216
-
3217
-
3218
-
3219
-
3220
-
3221
-
3222
-
3223
-
3224
-
3225
-
3226
-
3227
-
3228
-
3229
-
3230
-
3231
-
3232
-
3233
-
3234
-
3235
-
3236
-
3237
-
3238
-
3239
-
3240
-
3241
-
3242
-
3243
-
3244
-
3245
-
3246
-
3247
-
3248
-
3249
-
3250
-
3251
-
3252
-
3253
-
3254
-
3255
-
3256
-
3257
-
3258
-
3259
-
3260
-
3261
-
3262
-
3263
-
3264
-
3265
-
3266
-
3267
-
3268
-
3269
-
3270
-
3271
-
3272
-
3273
-
3274
-
3275
-
3276
-
3277
-
3278
-
3279
-
3280
- * @example
3281
- * // Aggregate
3282
- * const ms = new TreeMultiSet<number>();
3283
- * ms.add(1, 2);
3284
- * ms.add(2, 3);
3285
- * const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
3286
- * console.log(sum); // 8;
350
+ * @example
351
+ * // Aggregate
352
+ * const ms = new TreeMultiSet<number>();
353
+ * ms.add(1, 2);
354
+ * ms.add(2, 3);
355
+ * const sum = ms.reduce((acc, k, c) => acc + k * c, 0);
356
+ * console.log(sum); // 8;
3287
357
  */
3288
358
  reduce<U>(callback: (accumulator: U, key: K, count: number) => U, initialValue: U): U;
3289
359
  /**
3290
360
  * Maps keys and counts to a new TreeMultiSet.
3291
361
  * When multiple keys map to the same new key, counts are merged (added).
3292
362
  * @remarks Time O(n log n), Space O(n)
3293
-
3294
-
3295
-
3296
-
3297
-
3298
-
3299
-
3300
-
3301
-
3302
-
3303
-
3304
-
3305
-
3306
-
3307
-
3308
-
3309
-
3310
-
3311
-
3312
-
3313
-
3314
-
3315
-
3316
-
3317
-
3318
-
3319
-
3320
-
3321
-
3322
-
3323
-
3324
-
3325
-
3326
-
3327
-
3328
-
3329
-
3330
-
3331
-
3332
-
3333
-
3334
-
3335
-
3336
-
3337
-
3338
-
3339
-
3340
-
3341
-
3342
-
3343
-
3344
-
3345
-
3346
-
3347
-
3348
-
3349
-
3350
-
3351
-
3352
-
3353
-
3354
-
3355
-
3356
-
3357
-
3358
-
3359
-
3360
-
3361
-
3362
-
3363
-
3364
-
3365
-
3366
-
3367
-
3368
-
3369
-
3370
-
3371
-
3372
-
3373
-
3374
-
3375
-
3376
-
3377
-
3378
-
3379
-
3380
-
3381
-
3382
-
3383
-
3384
-
3385
-
3386
-
3387
-
3388
-
3389
-
3390
-
3391
-
3392
-
3393
-
3394
-
3395
-
3396
-
3397
-
3398
-
3399
-
3400
-
3401
-
3402
-
3403
-
3404
-
3405
-
3406
-
3407
-
3408
-
3409
-
3410
-
3411
-
3412
-
3413
-
3414
-
3415
-
3416
-
3417
-
3418
-
3419
-
3420
-
3421
-
3422
-
3423
-
3424
-
3425
-
3426
-
3427
-
3428
-
3429
-
3430
-
3431
-
3432
-
3433
-
3434
-
3435
-
3436
-
3437
-
3438
-
3439
-
3440
-
3441
-
3442
-
3443
-
3444
-
3445
-
3446
-
3447
-
3448
-
3449
-
3450
-
3451
-
3452
-
3453
-
3454
-
3455
-
3456
-
3457
-
3458
-
3459
-
3460
-
3461
-
3462
-
3463
-
3464
-
3465
-
3466
-
3467
-
3468
-
3469
-
3470
-
3471
-
3472
-
3473
-
3474
-
3475
-
3476
-
3477
-
3478
-
3479
-
3480
-
3481
-
3482
-
3483
-
3484
-
3485
-
3486
-
3487
- * @example
3488
- * // Transform
3489
- * const ms = new TreeMultiSet<number>();
3490
- * ms.add(1, 2);
3491
- * ms.add(2, 3);
3492
- * const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
3493
- * console.log([...doubled.keysDistinct()]); // [10, 20];
363
+ * @example
364
+ * // Transform
365
+ * const ms = new TreeMultiSet<number>();
366
+ * ms.add(1, 2);
367
+ * ms.add(2, 3);
368
+ * const doubled = ms.map((k, c) => [k * 10, c] as [number, number]);
369
+ * console.log([...doubled.keysDistinct()]); // [10, 20];
3494
370
  */
3495
371
  map<K2>(mapper: (key: K, count: number) => [K2, number], options?: {
3496
372
  comparator?: Comparator<K2>;
@@ -3498,637 +374,85 @@ export declare class TreeMultiSet<K = any, R = K> implements Iterable<K> {
3498
374
  /**
3499
375
  * Creates an independent copy of this multiset.
3500
376
  * @remarks Time O(n log n), Space O(n)
3501
-
3502
-
3503
-
3504
-
3505
-
3506
-
3507
-
3508
-
3509
-
3510
-
3511
-
3512
-
3513
-
3514
-
3515
-
3516
-
3517
-
3518
-
3519
-
3520
-
3521
-
3522
-
3523
-
3524
-
3525
-
3526
-
3527
-
3528
-
3529
-
3530
-
3531
-
3532
-
3533
-
3534
-
3535
-
3536
-
3537
-
3538
-
3539
-
3540
-
3541
-
3542
-
3543
-
3544
-
3545
-
3546
-
3547
-
3548
-
3549
-
3550
-
3551
-
3552
-
3553
-
3554
-
3555
-
3556
-
3557
-
3558
-
3559
-
3560
-
3561
-
3562
-
3563
-
3564
-
3565
-
3566
-
3567
-
3568
-
3569
-
3570
-
3571
-
3572
-
3573
-
3574
-
3575
-
3576
-
3577
-
3578
-
3579
-
3580
-
3581
-
3582
-
3583
-
3584
-
3585
-
3586
-
3587
-
3588
-
3589
-
3590
-
3591
-
3592
-
3593
-
3594
-
3595
-
3596
-
3597
-
3598
-
3599
-
3600
-
3601
-
3602
-
3603
-
3604
-
3605
-
3606
-
3607
-
3608
-
3609
-
3610
-
3611
-
3612
-
3613
-
3614
-
3615
-
3616
-
3617
-
3618
-
3619
-
3620
-
3621
-
3622
-
3623
-
3624
-
3625
-
3626
-
3627
-
3628
-
3629
-
3630
-
3631
-
3632
-
3633
-
3634
-
3635
-
3636
-
3637
-
3638
-
3639
-
3640
-
3641
-
3642
-
3643
-
3644
-
3645
-
3646
-
3647
-
3648
-
3649
-
3650
-
3651
-
3652
-
3653
-
3654
-
3655
-
3656
-
3657
-
3658
- * @example
3659
- * // Order-statistic on BST
3660
- * const tree = new TreeMultiSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
3661
- * console.log(tree.getByRank(0)); // 10;
3662
- * console.log(tree.getByRank(4)); // 50;
3663
- * console.log(tree.getRank(30)); // 2;
377
+ * @example
378
+ * // Order-statistic on BST
379
+ * const tree = new TreeMultiSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
380
+ * console.log(tree.getByRank(0)); // 10;
381
+ * console.log(tree.getByRank(4)); // 50;
382
+ * console.log(tree.getRank(30)); // 2;
3664
383
  */
3665
384
  getByRank(k: number): K | undefined;
3666
385
  /**
3667
- * Get the rank of a key in sorted order
3668
- * @example
3669
- * // Get the rank of a key in sorted order
3670
- * const tree = new TreeMultiSet<number>(
3671
- * [10, 20, 30, 40, 50],
3672
- * { enableOrderStatistic: true }
3673
- * );
3674
- * console.log(tree.getRank(10)); // 0; // smallest → rank 0
3675
- * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
3676
- * console.log(tree.getRank(50)); // 4; // largest → rank 4
3677
- * console.log(tree.getRank(25)); // 2;
3678
- */
386
+ * Get the rank of a key in sorted order
387
+ * @example
388
+ * // Get the rank of a key in sorted order
389
+ * const tree = new TreeMultiSet<number>(
390
+ * [10, 20, 30, 40, 50],
391
+ * { enableOrderStatistic: true }
392
+ * );
393
+ * console.log(tree.getRank(10)); // 0; // smallest → rank 0
394
+ * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
395
+ * console.log(tree.getRank(50)); // 4; // largest → rank 4
396
+ * console.log(tree.getRank(25)); // 2;
397
+ */
3679
398
  getRank(key: K): number;
3680
399
  /**
3681
- * Get elements by rank range
3682
-
3683
-
3684
-
3685
-
3686
-
3687
-
3688
-
3689
-
3690
-
3691
-
3692
-
3693
-
3694
-
3695
-
3696
-
3697
- * @example
3698
- * // Pagination by position in tree order
3699
- * const tree = new TreeMultiSet<number>(
3700
- * [10, 20, 30, 40, 50, 60, 70, 80, 90],
3701
- * { enableOrderStatistic: true }
3702
- * );
3703
- * const pageSize = 3;
3704
- *
3705
- * // Page 1
3706
- * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
3707
- * // Page 2
3708
- * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
3709
- * // Page 3
3710
- * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
3711
- */
400
+ * Get elements by rank range
401
+ * @example
402
+ * // Pagination by position in tree order
403
+ * const tree = new TreeMultiSet<number>([10, 20, 30, 40, 50, 60, 70, 80, 90], { enableOrderStatistic: true });
404
+ * const pageSize = 3;
405
+ *
406
+ * // Page 1
407
+ * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
408
+ * // Page 2
409
+ * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
410
+ * // Page 3
411
+ * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
412
+ */
3712
413
  rangeByRank(start: number, end: number): K[];
3713
414
  /**
3714
- * Deep copy
3715
-
3716
-
3717
-
3718
-
3719
-
3720
-
3721
-
3722
-
3723
-
3724
-
3725
-
3726
-
3727
-
3728
-
3729
-
3730
-
3731
-
3732
-
3733
-
3734
-
3735
-
3736
-
3737
-
3738
-
3739
-
3740
-
3741
-
3742
-
3743
-
3744
-
3745
-
3746
-
3747
-
3748
-
3749
-
3750
-
3751
-
3752
-
3753
-
3754
- * @example
3755
- * // Deep clone
3756
- * const ms = new TreeMultiSet<number>();
3757
- * ms.add(1, 3);
3758
- * const copy = ms.clone();
3759
- * copy.deleteAll(1);
3760
- * console.log(ms.has(1)); // true;
3761
- */
415
+ * Deep copy
416
+ * @example
417
+ * // Deep clone
418
+ * const ms = new TreeMultiSet<number>();
419
+ * ms.add(1, 3);
420
+ * const copy = ms.clone();
421
+ * copy.deleteAll(1);
422
+ * console.log(ms.has(1)); // true;
423
+ */
3762
424
  clone(): TreeMultiSet<K>;
3763
425
  /**
3764
426
  * Returns keys within the given range.
3765
427
  * @remarks Time O(log n + k), Space O(k) where k is result size
3766
-
3767
-
3768
-
3769
-
3770
-
3771
-
3772
-
3773
-
3774
-
3775
-
3776
-
3777
-
3778
-
3779
-
3780
-
3781
-
3782
-
3783
-
3784
-
3785
-
3786
-
3787
-
3788
-
3789
-
3790
-
3791
-
3792
-
3793
-
3794
-
3795
-
3796
-
3797
-
3798
-
3799
-
3800
-
3801
-
3802
-
3803
-
3804
-
3805
-
3806
-
3807
-
3808
-
3809
-
3810
-
3811
-
3812
-
3813
-
3814
-
3815
-
3816
-
3817
-
3818
-
3819
-
3820
-
3821
-
3822
-
3823
-
3824
-
3825
-
3826
-
3827
-
3828
-
3829
-
3830
-
3831
-
3832
-
3833
-
3834
-
3835
-
3836
-
3837
-
3838
-
3839
-
3840
-
3841
-
3842
-
3843
-
3844
-
3845
-
3846
-
3847
-
3848
-
3849
-
3850
-
3851
-
3852
-
3853
-
3854
-
3855
-
3856
-
3857
-
3858
-
3859
-
3860
-
3861
-
3862
-
3863
-
3864
-
3865
-
3866
-
3867
-
3868
-
3869
-
3870
-
3871
-
3872
-
3873
-
3874
-
3875
-
3876
-
3877
-
3878
-
3879
-
3880
-
3881
-
3882
-
3883
-
3884
-
3885
-
3886
-
3887
-
3888
-
3889
-
3890
-
3891
-
3892
-
3893
-
3894
-
3895
-
3896
-
3897
-
3898
-
3899
-
3900
-
3901
-
3902
-
3903
-
3904
-
3905
-
3906
-
3907
-
3908
-
3909
-
3910
-
3911
-
3912
-
3913
-
3914
-
3915
-
3916
-
3917
-
3918
-
3919
-
3920
- * @example
3921
- * // Find in range
3922
- * const ms = new TreeMultiSet<number>();
3923
- * ms.add(10);
3924
- * ms.add(20);
3925
- * ms.add(30);
3926
- * const result = ms.rangeSearch([15, 25]);
3927
- * console.log(result.length); // 1;
428
+ * @example
429
+ * // Find in range
430
+ * const ms = new TreeMultiSet<number>();
431
+ * ms.add(10);
432
+ * ms.add(20);
433
+ * ms.add(30);
434
+ * const result = ms.rangeSearch([15, 25]);
435
+ * console.log(result.length); // 1;
3928
436
  */
3929
437
  rangeSearch<C extends (key: K) => any>(range: [K, K], callback?: C): (C extends undefined ? K : ReturnType<C>)[];
3930
438
  /**
3931
439
  * Prints the internal tree structure (for debugging).
3932
440
  * @remarks Time O(n), Space O(n)
3933
-
3934
-
3935
-
3936
-
3937
-
3938
-
3939
-
3940
-
3941
-
3942
-
3943
-
3944
-
3945
-
3946
-
3947
-
3948
-
3949
-
3950
-
3951
-
3952
-
3953
-
3954
-
3955
-
3956
-
3957
-
3958
-
3959
-
3960
-
3961
-
3962
-
3963
-
3964
-
3965
-
3966
-
3967
-
3968
-
3969
-
3970
-
3971
-
3972
-
3973
-
3974
-
3975
-
3976
-
3977
-
3978
-
3979
-
3980
-
3981
-
3982
-
3983
-
3984
-
3985
-
3986
-
3987
-
3988
-
3989
-
3990
-
3991
-
3992
-
3993
-
3994
-
3995
-
3996
-
3997
-
3998
-
3999
-
4000
-
4001
-
4002
-
4003
-
4004
-
4005
-
4006
-
4007
-
4008
-
4009
-
4010
-
4011
-
4012
-
4013
-
4014
-
4015
-
4016
-
4017
-
4018
-
4019
-
4020
-
4021
-
4022
-
4023
-
4024
-
4025
-
4026
-
4027
-
4028
-
4029
-
4030
-
4031
-
4032
-
4033
-
4034
-
4035
-
4036
-
4037
-
4038
-
4039
-
4040
-
4041
-
4042
-
4043
-
4044
-
4045
-
4046
-
4047
-
4048
-
4049
-
4050
-
4051
-
4052
-
4053
-
4054
-
4055
-
4056
-
4057
-
4058
-
4059
-
4060
-
4061
-
4062
-
4063
-
4064
-
4065
-
4066
-
4067
-
4068
-
4069
-
4070
-
4071
-
4072
-
4073
-
4074
-
4075
-
4076
-
4077
-
4078
-
4079
-
4080
-
4081
-
4082
-
4083
-
4084
-
4085
-
4086
-
4087
-
4088
-
4089
-
4090
-
4091
-
4092
-
4093
-
4094
-
4095
-
4096
-
4097
-
4098
-
4099
-
4100
-
4101
-
4102
-
4103
-
4104
-
4105
-
4106
-
4107
-
4108
-
4109
-
4110
-
4111
-
4112
-
4113
-
4114
-
4115
-
4116
-
4117
-
4118
-
4119
-
4120
-
4121
-
4122
-
4123
-
4124
-
4125
-
4126
-
4127
- * @example
4128
- * // Display
4129
- * const ms = new TreeMultiSet<number>();
4130
- * ms.add(1);
4131
- * expect(() => ms.print()).not.toThrow();
441
+ * @example
442
+ * // Display
443
+ * const ms = new TreeMultiSet<number>();
444
+ * ms.add(1);
445
+ * expect(() => ms.print()).not.toThrow();
4132
446
  */
4133
447
  print(): void;
448
+ /**
449
+ * Validates the key against the default comparator rules.
450
+ * @remarks Time O(1), Space O(1)
451
+ */
452
+ private _validateKey;
453
+ /**
454
+ * Validates that count is a non-negative safe integer.
455
+ * @remarks Time O(1), Space O(1)
456
+ */
457
+ private _validateCount;
4134
458
  }