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
@@ -6,8 +6,7 @@
6
6
  * - Native Set-like surface + Java NavigableSet-like helpers
7
7
  * - Strict default comparator (number/string/Date), otherwise require comparator
8
8
  */
9
- import type { Comparator } from '../../types';
10
- import type { TreeSetElementCallback, TreeSetOptions, TreeSetRangeOptions, TreeSetReduceCallback } from '../../types';
9
+ import type { Comparator, TreeSetElementCallback, TreeSetOptions, TreeSetRangeOptions, TreeSetReduceCallback } from '../../types';
11
10
  /**
12
11
  * An ordered Set backed by a red-black tree.
13
12
  *
@@ -37,6 +36,10 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
37
36
  * const set = new TreeSet<number, User>(users, { toElementFn: u => u.id });
38
37
  */
39
38
  constructor(elements?: Iterable<R> | Iterable<K>, options?: TreeSetOptions<K, R>);
39
+ /**
40
+ * Number of elements in the set.
41
+ */
42
+ get size(): number;
40
43
  /**
41
44
  * Create the strict default comparator.
42
45
  *
@@ -48,421 +51,27 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
48
51
  * For other key types, a custom comparator must be provided.
49
52
  */
50
53
  static createDefaultComparator<K>(): Comparator<K>;
51
- /**
52
- * Number of elements in the set.
53
- */
54
- get size(): number;
55
54
  /**
56
55
  * Whether the set is empty.
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
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
- * @example
251
- * // Check empty
252
- * console.log(new TreeSet().isEmpty()); // true;
56
+ * @example
57
+ * // Check empty
58
+ * console.log(new TreeSet().isEmpty()); // true;
253
59
  */
254
60
  isEmpty(): boolean;
255
- private _validateKey;
256
61
  /**
257
62
  * Add a key to the set (no-op if already present).
258
63
  * @remarks Expected time O(log n)
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
-
284
-
285
-
286
-
287
-
288
-
289
-
290
-
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
- * @example
456
- * // Unique tags with sorted order
457
- * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
458
- *
459
- * // Duplicates removed, sorted alphabetically
460
- * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
461
- * console.log(tags.size); // 4;
462
- *
463
- * tags.add('angular');
464
- * console.log(tags.first()); // 'angular';
465
- * console.log(tags.last()); // 'typescript';
64
+ * @example
65
+ * // Unique tags with sorted order
66
+ * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
67
+ *
68
+ * // Duplicates removed, sorted alphabetically
69
+ * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
70
+ * console.log(tags.size); // 4;
71
+ *
72
+ * tags.add('angular');
73
+ * console.log(tags.first()); // 'angular';
74
+ * console.log(tags.last()); // 'typescript';
466
75
  */
467
76
  add(key: K): this;
468
77
  /**
@@ -470,471 +79,35 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
470
79
  * @remarks Expected time O(m log n), where m is the number of keys.
471
80
  * @param keys - Iterable of keys to add.
472
81
  * @returns Array of booleans indicating whether each key was newly added.
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
-
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
-
501
- * @example
502
- * // Add multiple keys
503
- * const ts = new TreeSet<number>();
504
- * ts.addMany([5, 3, 7, 1, 9]);
505
- * console.log(ts.size); // 5;
82
+ * @example
83
+ * // Add multiple keys
84
+ * const ts = new TreeSet<number>();
85
+ * ts.addMany([5, 3, 7, 1, 9]);
86
+ * console.log(ts.size); // 5;
506
87
  */
507
88
  addMany(keys: Iterable<K>): boolean[];
508
89
  /**
509
90
  * Test whether a key exists.
510
91
  * @remarks Expected time O(log n)
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
-
523
-
524
-
525
-
526
-
527
-
528
-
529
-
530
-
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
-
540
-
541
-
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
- * @example
716
- * // Checking membership in a sorted collection
717
- * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
718
- *
719
- * console.log(allowed.has('admin')); // true;
720
- * console.log(allowed.has('guest')); // false;
92
+ * @example
93
+ * // Checking membership in a sorted collection
94
+ * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
95
+ *
96
+ * console.log(allowed.has('admin')); // true;
97
+ * console.log(allowed.has('guest')); // false;
721
98
  */
722
99
  has(key: K): boolean;
723
100
  /**
724
101
  * Delete a key.
725
102
  * @returns `true` if the key existed; otherwise `false`.
726
103
  * @remarks Expected time O(log n)
727
-
728
-
729
-
730
-
731
-
732
-
733
-
734
-
735
-
736
-
737
-
738
-
739
-
740
-
741
-
742
-
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
-
777
-
778
-
779
-
780
-
781
-
782
-
783
-
784
-
785
-
786
-
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
- * @example
932
- * // Removing elements while maintaining order
933
- * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
934
- *
935
- * console.log(nums.delete(5)); // true;
936
- * console.log(nums.delete(5)); // false; // already gone
937
- * console.log([...nums]); // [1, 3, 7, 9];
104
+ * @example
105
+ * // Removing elements while maintaining order
106
+ * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
107
+ *
108
+ * console.log(nums.delete(5)); // true;
109
+ * console.log(nums.delete(5)); // false; // already gone
110
+ * console.log([...nums]); // [1, 3, 7, 9];
938
111
  */
939
112
  delete(key: K): boolean;
940
113
  /**
@@ -946,811 +119,39 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
946
119
  deleteWhere(predicate: (key: K, index: number, set: this) => boolean): boolean;
947
120
  /**
948
121
  * Remove all keys.
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
-
984
-
985
-
986
-
987
-
988
-
989
-
990
-
991
-
992
-
993
-
994
-
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
-
1029
-
1030
-
1031
-
1032
-
1033
-
1034
-
1035
-
1036
-
1037
-
1038
-
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
-
1073
-
1074
-
1075
-
1076
-
1077
-
1078
-
1079
-
1080
-
1081
-
1082
-
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
- * @example
1143
- * // Remove all
1144
- * const ts = new TreeSet<number>([1, 2]);
1145
- * ts.clear();
1146
- * console.log(ts.isEmpty()); // true;
122
+ * @example
123
+ * // Remove all
124
+ * const ts = new TreeSet<number>([1, 2]);
125
+ * ts.clear();
126
+ * console.log(ts.isEmpty()); // true;
1147
127
  */
1148
128
  clear(): void;
1149
129
  /**
1150
130
  * Iterate over keys in ascending order.
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
-
1277
-
1278
-
1279
-
1280
-
1281
-
1282
-
1283
-
1284
-
1285
-
1286
-
1287
-
1288
-
1289
-
1290
-
1291
-
1292
-
1293
-
1294
-
1295
-
1296
-
1297
-
1298
-
1299
-
1300
-
1301
-
1302
-
1303
-
1304
-
1305
-
1306
-
1307
-
1308
-
1309
-
1310
-
1311
-
1312
-
1313
-
1314
-
1315
-
1316
-
1317
-
1318
-
1319
-
1320
-
1321
-
1322
-
1323
-
1324
-
1325
-
1326
-
1327
-
1328
-
1329
-
1330
-
1331
-
1332
-
1333
-
1334
-
1335
-
1336
-
1337
-
1338
-
1339
-
1340
-
1341
-
1342
-
1343
-
1344
- * @example
1345
- * // Get sorted keys
1346
- * const ts = new TreeSet<number>([30, 10, 20]);
1347
- * console.log([...ts.keys()]); // [10, 20, 30];
131
+ * @example
132
+ * // Get sorted keys
133
+ * const ts = new TreeSet<number>([30, 10, 20]);
134
+ * console.log([...ts.keys()]); // [10, 20, 30];
1348
135
  */
1349
136
  keys(): IterableIterator<K>;
1350
137
  /**
1351
138
  * Iterate over values in ascending order.
1352
139
  *
1353
140
  * Note: for Set-like containers, `values()` is the same as `keys()`.
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
-
1521
-
1522
-
1523
-
1524
-
1525
-
1526
-
1527
-
1528
-
1529
-
1530
-
1531
-
1532
-
1533
-
1534
-
1535
-
1536
-
1537
-
1538
-
1539
-
1540
-
1541
-
1542
-
1543
-
1544
-
1545
-
1546
-
1547
- * @example
1548
- * // Get values (same as keys for Set)
1549
- * const ts = new TreeSet<number>([2, 1, 3]);
1550
- * console.log([...ts.values()]); // [1, 2, 3];
141
+ * @example
142
+ * // Get values (same as keys for Set)
143
+ * const ts = new TreeSet<number>([2, 1, 3]);
144
+ * console.log([...ts.values()]); // [1, 2, 3];
1551
145
  */
1552
146
  values(): IterableIterator<K>;
1553
147
  /**
1554
148
  * Iterate over `[value, value]` pairs (native Set convention).
1555
149
  *
1556
150
  * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
1557
-
1558
-
1559
-
1560
-
1561
-
1562
-
1563
-
1564
-
1565
-
1566
-
1567
-
1568
-
1569
-
1570
-
1571
-
1572
-
1573
-
1574
-
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
-
1609
-
1610
-
1611
-
1612
-
1613
-
1614
-
1615
-
1616
-
1617
-
1618
-
1619
-
1620
-
1621
-
1622
-
1623
-
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
- * @example
1751
- * // Iterate entries
1752
- * const ts = new TreeSet<number>([3, 1, 2]);
1753
- * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
151
+ * @example
152
+ * // Iterate entries
153
+ * const ts = new TreeSet<number>([3, 1, 2]);
154
+ * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
1754
155
  */
1755
156
  entries(): IterableIterator<[K, K]>;
1756
157
  [Symbol.iterator](): IterableIterator<K>;
@@ -1758,205 +159,12 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1758
159
  * Visit each value in ascending order.
1759
160
  *
1760
161
  * Callback follows native Set convention: `(value, value2, set)`.
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
-
1819
-
1820
-
1821
-
1822
-
1823
-
1824
-
1825
-
1826
-
1827
-
1828
-
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
-
1864
-
1865
-
1866
-
1867
-
1868
-
1869
-
1870
-
1871
-
1872
-
1873
-
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
-
1909
-
1910
-
1911
-
1912
-
1913
-
1914
-
1915
-
1916
-
1917
-
1918
-
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
-
1954
- * @example
1955
- * // Execute for each
1956
- * const ts = new TreeSet<number>([3, 1, 2]);
1957
- * const keys: number[] = [];
1958
- * ts.forEach(k => keys.push(k));
1959
- * console.log(keys); // [1, 2, 3];
162
+ * @example
163
+ * // Execute for each
164
+ * const ts = new TreeSet<number>([3, 1, 2]);
165
+ * const keys: number[] = [];
166
+ * ts.forEach(k => keys.push(k));
167
+ * console.log(keys); // [1, 2, 3];
1960
168
  */
1961
169
  forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: unknown): void;
1962
170
  /**
@@ -1964,204 +172,11 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1964
172
  *
1965
173
  * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1966
174
  * @remarks Time O(n log n) expected, Space O(n)
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
-
2000
-
2001
-
2002
-
2003
-
2004
-
2005
-
2006
-
2007
-
2008
-
2009
-
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
- * @example
2161
- * // Transform
2162
- * const ts = new TreeSet<number>([1, 2, 3]);
2163
- * const doubled = ts.map(k => k * 2);
2164
- * console.log([...doubled]); // [2, 4, 6];
175
+ * @example
176
+ * // Transform
177
+ * const ts = new TreeSet<number>([1, 2, 3]);
178
+ * const doubled = ts.map(k => k * 2);
179
+ * console.log([...doubled]); // [2, 4, 6];
2165
180
  */
2166
181
  map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
2167
182
  comparator?: (a: MK, b: MK) => number;
@@ -2169,2341 +184,180 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
2169
184
  /**
2170
185
  * Create a new TreeSet containing only values that satisfy the predicate.
2171
186
  * @remarks Time O(n log n) expected, Space O(n)
2172
-
2173
-
2174
-
2175
-
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
-
2331
-
2332
-
2333
-
2334
-
2335
-
2336
-
2337
-
2338
-
2339
-
2340
-
2341
-
2342
-
2343
-
2344
-
2345
-
2346
-
2347
-
2348
-
2349
-
2350
-
2351
-
2352
-
2353
-
2354
-
2355
-
2356
-
2357
-
2358
-
2359
-
2360
-
2361
-
2362
-
2363
-
2364
-
2365
- * @example
2366
- * // Filter
2367
- * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
2368
- * const evens = ts.filter(k => k % 2 === 0);
2369
- * console.log([...evens]); // [2, 4];
187
+ * @example
188
+ * // Filter
189
+ * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
190
+ * const evens = ts.filter(k => k % 2 === 0);
191
+ * console.log([...evens]); // [2, 4];
2370
192
  */
2371
193
  filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
2372
194
  /**
2373
195
  * Reduce values into a single accumulator.
2374
196
  * @remarks Time O(n), Space O(1)
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
-
2497
-
2498
-
2499
-
2500
-
2501
-
2502
-
2503
-
2504
-
2505
-
2506
-
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
- * @example
2569
- * // Aggregate
2570
- * const ts = new TreeSet<number>([1, 2, 3]);
2571
- * const sum = ts.reduce((acc, k) => acc + k, 0);
2572
- * console.log(sum); // 6;
197
+ * @example
198
+ * // Aggregate
199
+ * const ts = new TreeSet<number>([1, 2, 3]);
200
+ * const sum = ts.reduce((acc, k) => acc + k, 0);
201
+ * console.log(sum); // 6;
2573
202
  */
2574
203
  reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
2575
204
  /**
2576
205
  * Test whether all values satisfy a predicate.
2577
206
  * @remarks Time O(n), Space O(1)
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
-
2662
-
2663
-
2664
-
2665
-
2666
-
2667
-
2668
-
2669
-
2670
-
2671
-
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
- * @example
2770
- * // Test all
2771
- * const ts = new TreeSet<number>([2, 4, 6]);
2772
- * console.log(ts.every(k => k > 0)); // true;
207
+ * @example
208
+ * // Test all
209
+ * const ts = new TreeSet<number>([2, 4, 6]);
210
+ * console.log(ts.every(k => k > 0)); // true;
2773
211
  */
2774
212
  every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2775
213
  /**
2776
214
  * Test whether any value satisfies a predicate.
2777
215
  * @remarks Time O(n), Space O(1)
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
-
2867
-
2868
-
2869
-
2870
-
2871
-
2872
-
2873
-
2874
-
2875
-
2876
-
2877
-
2878
-
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
- * @example
2970
- * // Test any
2971
- * const ts = new TreeSet<number>([1, 3, 5]);
2972
- * console.log(ts.some(k => k === 3)); // true;
216
+ * @example
217
+ * // Test any
218
+ * const ts = new TreeSet<number>([1, 3, 5]);
219
+ * console.log(ts.some(k => k === 3)); // true;
2973
220
  */
2974
221
  some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2975
222
  /**
2976
223
  * Find the first value that satisfies a predicate.
2977
224
  * @remarks Time O(n), Space O(1)
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
-
3074
-
3075
-
3076
-
3077
-
3078
-
3079
-
3080
-
3081
-
3082
-
3083
-
3084
-
3085
-
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
- * @example
3170
- * // Find entry
3171
- * const ts = new TreeSet<number>([1, 2, 3]);
3172
- * const found = ts.find(k => k === 2);
3173
- * console.log(found); // 2;
225
+ * @example
226
+ * // Find entry
227
+ * const ts = new TreeSet<number>([1, 2, 3]);
228
+ * const found = ts.find(k => k === 2);
229
+ * console.log(found); // 2;
3174
230
  */
3175
231
  find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
3176
232
  /**
3177
233
  * Materialize the set into an array of keys.
3178
234
  * @remarks Time O(n), Space O(n)
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
-
3281
-
3282
-
3283
-
3284
-
3285
-
3286
-
3287
-
3288
-
3289
-
3290
-
3291
-
3292
-
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
- * @example
3373
- * // Convert to array
3374
- * const ts = new TreeSet<number>([3, 1, 2]);
3375
- * console.log(ts.toArray()); // [1, 2, 3];
235
+ * @example
236
+ * // Convert to array
237
+ * const ts = new TreeSet<number>([3, 1, 2]);
238
+ * console.log(ts.toArray()); // [1, 2, 3];
3376
239
  */
3377
240
  toArray(): K[];
3378
241
  /**
3379
242
  * Print a human-friendly representation.
3380
243
  * @remarks Time O(n), Space O(n)
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
-
3488
-
3489
-
3490
-
3491
-
3492
-
3493
-
3494
-
3495
-
3496
-
3497
-
3498
-
3499
-
3500
-
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
- * @example
3575
- * // Display tree
3576
- * const ts = new TreeSet<number>([1, 2, 3]);
3577
- * expect(() => ts.print()).not.toThrow();
244
+ * @example
245
+ * // Display tree
246
+ * const ts = new TreeSet<number>([1, 2, 3]);
247
+ * expect(() => ts.print()).not.toThrow();
3578
248
  */
3579
249
  print(): void;
3580
250
  /**
3581
251
  * Smallest key in the set.
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
- * @example
3625
- * // Student grade ranking with custom comparator
3626
- * interface Student {
3627
- * name: string;
3628
- * gpa: number;
3629
- * }
3630
- *
3631
- * const ranking = new TreeSet<Student>(
3632
- * [
3633
- * { name: 'Alice', gpa: 3.8 },
3634
- * { name: 'Bob', gpa: 3.5 },
3635
- * { name: 'Charlie', gpa: 3.9 },
3636
- * { name: 'Diana', gpa: 3.5 }
3637
- * ],
3638
- * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
3639
- * );
3640
- *
3641
- * // Sorted by GPA descending, then name ascending
3642
- * const names = [...ranking].map(s => s.name);
3643
- * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
3644
- *
3645
- * // Top student
3646
- * console.log(ranking.first()?.name); // 'Charlie';
3647
- *
3648
- * // Filter students with GPA >= 3.8
3649
- * const honors = ranking.filter(s => s.gpa >= 3.8);
3650
- * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
252
+ * @example
253
+ * // Student grade ranking with custom comparator
254
+ * interface Student {
255
+ * name: string;
256
+ * gpa: number;
257
+ * }
258
+ *
259
+ * const ranking = new TreeSet<Student>(
260
+ * [
261
+ * { name: 'Alice', gpa: 3.8 },
262
+ * { name: 'Bob', gpa: 3.5 },
263
+ * { name: 'Charlie', gpa: 3.9 },
264
+ * { name: 'Diana', gpa: 3.5 }
265
+ * ],
266
+ * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
267
+ * );
268
+ *
269
+ * // Sorted by GPA descending, then name ascending
270
+ * const names = [...ranking].map(s => s.name);
271
+ * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
272
+ *
273
+ * // Top student
274
+ * console.log(ranking.first()?.name); // 'Charlie';
275
+ *
276
+ * // Filter students with GPA >= 3.8
277
+ * const honors = ranking.filter(s => s.gpa >= 3.8);
278
+ * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
3651
279
  */
3652
280
  first(): K | undefined;
3653
281
  /**
3654
282
  * Largest key in the set.
3655
-
3656
-
3657
-
3658
-
3659
-
3660
-
3661
-
3662
-
3663
-
3664
-
3665
-
3666
-
3667
-
3668
-
3669
-
3670
-
3671
-
3672
-
3673
-
3674
-
3675
-
3676
-
3677
-
3678
-
3679
-
3680
-
3681
-
3682
-
3683
-
3684
-
3685
-
3686
-
3687
-
3688
-
3689
-
3690
-
3691
-
3692
-
3693
-
3694
-
3695
-
3696
-
3697
- * @example
3698
- * // Get the maximum element
3699
- * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
3700
- * console.log(temps.last()); // 30;
3701
- * console.log(temps.first()); // 15;
283
+ * @example
284
+ * // Get the maximum element
285
+ * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
286
+ * console.log(temps.last()); // 30;
287
+ * console.log(temps.first()); // 15;
3702
288
  */
3703
289
  last(): K | undefined;
3704
290
  /**
3705
291
  * Remove and return the smallest key.
3706
-
3707
-
3708
-
3709
-
3710
-
3711
-
3712
-
3713
-
3714
-
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
- * @example
3749
- * // Remove and return minimum
3750
- * const queue = new TreeSet<number>([5, 1, 8, 3]);
3751
- *
3752
- * console.log(queue.pollFirst()); // 1;
3753
- * console.log(queue.pollFirst()); // 3;
3754
- * console.log(queue.size); // 2;
292
+ * @example
293
+ * // Remove and return minimum
294
+ * const queue = new TreeSet<number>([5, 1, 8, 3]);
295
+ *
296
+ * console.log(queue.pollFirst()); // 1;
297
+ * console.log(queue.pollFirst()); // 3;
298
+ * console.log(queue.size); // 2;
3755
299
  */
3756
300
  pollFirst(): K | undefined;
3757
301
  /**
3758
302
  * Remove and return the largest key.
3759
-
3760
-
3761
-
3762
-
3763
-
3764
-
3765
-
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
- * @example
3802
- * // Remove and return maximum
3803
- * const stack = new TreeSet<number>([10, 20, 30]);
3804
- *
3805
- * console.log(stack.pollLast()); // 30;
3806
- * console.log(stack.size); // 2;
303
+ * @example
304
+ * // Remove and return maximum
305
+ * const stack = new TreeSet<number>([10, 20, 30]);
306
+ *
307
+ * console.log(stack.pollLast()); // 30;
308
+ * console.log(stack.size); // 2;
3807
309
  */
3808
310
  pollLast(): K | undefined;
3809
311
  /**
3810
312
  * Smallest key that is >= the given key.
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
-
3921
-
3922
-
3923
-
3924
-
3925
-
3926
-
3927
-
3928
-
3929
-
3930
-
3931
-
3932
-
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
- * @example
3974
- * // Finding nearest available time slot
3975
- * // Available appointment times (minutes from midnight)
3976
- * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
3977
- *
3978
- * // Customer wants something around 10:30 (630 min)
3979
- * const nearest = slots.ceiling(630);
3980
- * console.log(nearest); // 660; // 11:00 AM
3981
- *
3982
- * // What's the latest slot before 2:00 PM (840)?
3983
- * const before2pm = slots.lower(840);
3984
- * console.log(before2pm); // 720; // 12:00 PM
3985
- *
3986
- * // Book the 11:00 slot
3987
- * slots.delete(660);
3988
- * console.log(slots.ceiling(630)); // 720;
313
+ * @example
314
+ * // Finding nearest available time slot
315
+ * // Available appointment times (minutes from midnight)
316
+ * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
317
+ *
318
+ * // Customer wants something around 10:30 (630 min)
319
+ * const nearest = slots.ceiling(630);
320
+ * console.log(nearest); // 660; // 11:00 AM
321
+ *
322
+ * // What's the latest slot before 2:00 PM (840)?
323
+ * const before2pm = slots.lower(840);
324
+ * console.log(before2pm); // 720; // 12:00 PM
325
+ *
326
+ * // Book the 11:00 slot
327
+ * slots.delete(660);
328
+ * console.log(slots.ceiling(630)); // 720;
3989
329
  */
3990
330
  ceiling(key: K): K | undefined;
3991
331
  /**
3992
332
  * Largest key that is <= the given key.
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
-
4128
-
4129
-
4130
-
4131
-
4132
-
4133
-
4134
-
4135
-
4136
-
4137
-
4138
-
4139
-
4140
-
4141
-
4142
-
4143
-
4144
-
4145
-
4146
-
4147
-
4148
-
4149
-
4150
-
4151
-
4152
-
4153
-
4154
-
4155
- * @example
4156
- * // Largest element ≤ target
4157
- * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
4158
- *
4159
- * // Current width is 800 → which breakpoint applies?
4160
- * console.log(breakpoints.floor(800)); // 768;
4161
- * console.log(breakpoints.floor(1024)); // 1024; // exact match
4162
- * console.log(breakpoints.floor(100)); // undefined;
333
+ * @example
334
+ * // Largest element ≤ target
335
+ * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
336
+ *
337
+ * // Current width is 800 → which breakpoint applies?
338
+ * console.log(breakpoints.floor(800)); // 768;
339
+ * console.log(breakpoints.floor(1024)); // 1024; // exact match
340
+ * console.log(breakpoints.floor(100)); // undefined;
4163
341
  */
4164
342
  floor(key: K): K | undefined;
4165
343
  /**
4166
344
  * Smallest key that is > the given key.
4167
-
4168
-
4169
-
4170
-
4171
-
4172
-
4173
-
4174
-
4175
-
4176
-
4177
-
4178
-
4179
-
4180
-
4181
-
4182
-
4183
-
4184
-
4185
-
4186
-
4187
-
4188
-
4189
-
4190
-
4191
-
4192
-
4193
-
4194
-
4195
-
4196
-
4197
-
4198
-
4199
-
4200
-
4201
-
4202
-
4203
-
4204
-
4205
-
4206
-
4207
-
4208
-
4209
-
4210
-
4211
-
4212
-
4213
-
4214
-
4215
-
4216
-
4217
-
4218
-
4219
-
4220
-
4221
-
4222
-
4223
-
4224
-
4225
-
4226
-
4227
-
4228
-
4229
-
4230
-
4231
-
4232
-
4233
-
4234
-
4235
-
4236
-
4237
-
4238
-
4239
-
4240
-
4241
-
4242
-
4243
-
4244
-
4245
-
4246
-
4247
-
4248
-
4249
-
4250
-
4251
-
4252
-
4253
-
4254
-
4255
-
4256
-
4257
-
4258
-
4259
-
4260
-
4261
-
4262
-
4263
-
4264
-
4265
-
4266
-
4267
-
4268
-
4269
-
4270
-
4271
-
4272
-
4273
-
4274
-
4275
-
4276
-
4277
-
4278
-
4279
-
4280
-
4281
-
4282
-
4283
-
4284
-
4285
-
4286
-
4287
-
4288
-
4289
-
4290
-
4291
-
4292
-
4293
-
4294
-
4295
-
4296
-
4297
-
4298
-
4299
-
4300
-
4301
-
4302
-
4303
-
4304
-
4305
-
4306
-
4307
-
4308
-
4309
-
4310
-
4311
-
4312
-
4313
-
4314
-
4315
-
4316
-
4317
-
4318
-
4319
-
4320
-
4321
-
4322
-
4323
-
4324
-
4325
-
4326
-
4327
-
4328
-
4329
- * @example
4330
- * // Smallest element strictly > target
4331
- * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
4332
- *
4333
- * console.log(levels.higher(10)); // 25;
4334
- * console.log(levels.higher(100)); // undefined;
345
+ * @example
346
+ * // Smallest element strictly > target
347
+ * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
348
+ *
349
+ * console.log(levels.higher(10)); // 25;
350
+ * console.log(levels.higher(100)); // undefined;
4335
351
  */
4336
352
  higher(key: K): K | undefined;
4337
353
  /**
4338
354
  * Largest key that is < the given key.
4339
-
4340
-
4341
-
4342
-
4343
-
4344
-
4345
-
4346
-
4347
-
4348
-
4349
-
4350
-
4351
-
4352
-
4353
-
4354
-
4355
-
4356
-
4357
-
4358
-
4359
-
4360
-
4361
-
4362
-
4363
-
4364
-
4365
-
4366
-
4367
-
4368
-
4369
-
4370
-
4371
-
4372
-
4373
-
4374
-
4375
-
4376
-
4377
-
4378
-
4379
-
4380
-
4381
-
4382
-
4383
-
4384
-
4385
-
4386
-
4387
-
4388
-
4389
-
4390
-
4391
-
4392
-
4393
-
4394
-
4395
-
4396
-
4397
-
4398
-
4399
-
4400
-
4401
-
4402
-
4403
-
4404
-
4405
-
4406
-
4407
-
4408
-
4409
-
4410
-
4411
-
4412
-
4413
-
4414
-
4415
-
4416
-
4417
-
4418
-
4419
-
4420
-
4421
-
4422
-
4423
-
4424
-
4425
-
4426
-
4427
-
4428
-
4429
-
4430
-
4431
-
4432
-
4433
-
4434
-
4435
-
4436
-
4437
-
4438
-
4439
-
4440
-
4441
-
4442
-
4443
-
4444
-
4445
-
4446
-
4447
-
4448
-
4449
-
4450
-
4451
-
4452
-
4453
-
4454
-
4455
-
4456
-
4457
-
4458
-
4459
-
4460
-
4461
-
4462
-
4463
-
4464
-
4465
-
4466
-
4467
-
4468
-
4469
-
4470
-
4471
-
4472
-
4473
-
4474
-
4475
-
4476
-
4477
-
4478
-
4479
-
4480
-
4481
-
4482
-
4483
-
4484
-
4485
-
4486
-
4487
-
4488
-
4489
-
4490
-
4491
-
4492
-
4493
-
4494
-
4495
-
4496
-
4497
-
4498
-
4499
-
4500
-
4501
- * @example
4502
- * // Largest element strictly < target
4503
- * const tiers = new TreeSet<number>([100, 200, 500, 1000]);
4504
- *
4505
- * console.log(tiers.lower(500)); // 200;
4506
- * console.log(tiers.lower(100)); // undefined;
355
+ * @example
356
+ * // Largest element strictly < target
357
+ * const tiers = new TreeSet<number>([100, 200, 500, 1000]);
358
+ *
359
+ * console.log(tiers.lower(500)); // 200;
360
+ * console.log(tiers.lower(100)); // undefined;
4507
361
  */
4508
362
  lower(key: K): K | undefined;
4509
363
  /**
@@ -4511,462 +365,95 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
4511
365
  *
4512
366
  * @param range `[low, high]`
4513
367
  * @param options Inclusive/exclusive bounds (defaults to inclusive).
4514
-
4515
-
4516
-
4517
-
4518
-
4519
-
4520
-
4521
-
4522
-
4523
-
4524
-
4525
-
4526
-
4527
-
4528
-
4529
-
4530
-
4531
-
4532
-
4533
-
4534
-
4535
-
4536
-
4537
-
4538
-
4539
-
4540
-
4541
-
4542
-
4543
-
4544
-
4545
-
4546
-
4547
-
4548
-
4549
-
4550
-
4551
-
4552
-
4553
-
4554
-
4555
-
4556
-
4557
-
4558
-
4559
-
4560
-
4561
-
4562
-
4563
-
4564
-
4565
-
4566
-
4567
-
4568
-
4569
-
4570
-
4571
-
4572
-
4573
-
4574
-
4575
-
4576
-
4577
-
4578
-
4579
-
4580
-
4581
-
4582
-
4583
-
4584
-
4585
-
4586
-
4587
-
4588
-
4589
-
4590
-
4591
-
4592
-
4593
-
4594
-
4595
-
4596
-
4597
-
4598
-
4599
-
4600
-
4601
-
4602
-
4603
-
4604
-
4605
-
4606
-
4607
-
4608
-
4609
-
4610
-
4611
-
4612
-
4613
-
4614
-
4615
-
4616
-
4617
-
4618
-
4619
-
4620
-
4621
-
4622
-
4623
-
4624
-
4625
-
4626
-
4627
-
4628
-
4629
-
4630
-
4631
-
4632
-
4633
-
4634
-
4635
-
4636
-
4637
-
4638
-
4639
-
4640
-
4641
-
4642
-
4643
-
4644
-
4645
-
4646
-
4647
-
4648
-
4649
-
4650
-
4651
-
4652
-
4653
-
4654
-
4655
-
4656
-
4657
-
4658
-
4659
-
4660
-
4661
-
4662
-
4663
-
4664
-
4665
-
4666
-
4667
-
4668
-
4669
-
4670
-
4671
-
4672
-
4673
-
4674
-
4675
-
4676
- * @example
4677
- * // IP address blocklist with range checking
4678
- * // Simplified: use numeric IP representation
4679
- * const blocklist = new TreeSet<number>([
4680
- * 167772160, // 10.0.0.0
4681
- * 167772416, // 10.0.1.0
4682
- * 167772672, // 10.0.2.0
4683
- * 167773184 // 10.0.4.0
4684
- * ]);
4685
- *
4686
- * // Check if any blocked IP is in range 10.0.1.0 - 10.0.3.0
4687
- * const inRange = blocklist.rangeSearch([167772416, 167772928]);
4688
- * console.log(inRange); // [167772416, 167772672];
4689
- *
4690
- * // Quick membership check
4691
- * console.log(blocklist.has(167772416)); // true;
4692
- * console.log(blocklist.has(167772800)); // false;
368
+ * @example
369
+ * // IP address blocklist with range checking
370
+ * // Simplified: use numeric IP representation
371
+ * const blocklist = new TreeSet<number>([
372
+ * 167772160, // 10.0.0.0
373
+ * 167772416, // 10.0.1.0
374
+ * 167772672, // 10.0.2.0
375
+ * 167773184 // 10.0.4.0
376
+ * ]);
377
+ *
378
+ * // Check if any blocked IP is in range 10.0.1.0 - 10.0.3.0
379
+ * const inRange = blocklist.rangeSearch([167772416, 167772928]);
380
+ * console.log(inRange); // [167772416, 167772672];
381
+ *
382
+ * // Quick membership check
383
+ * console.log(blocklist.has(167772416)); // true;
384
+ * console.log(blocklist.has(167772800)); // false;
4693
385
  */
4694
386
  rangeSearch(range: [K, K], options?: TreeSetRangeOptions): K[];
4695
387
  /**
4696
388
  * Returns the element at the k-th position in tree order (0-indexed).
4697
389
  * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
4698
-
4699
-
4700
-
4701
- * @example
4702
- * // Find k-th element in a TreeSet
4703
- * const set = new TreeSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
4704
- * console.log(set.getByRank(0)); // 10;
4705
- * console.log(set.getByRank(2)); // 30;
4706
- * console.log(set.getRank(30)); // 2;
390
+ * @example
391
+ * // Find k-th element in a TreeSet
392
+ * const set = new TreeSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
393
+ * console.log(set.getByRank(0)); // 10;
394
+ * console.log(set.getByRank(2)); // 30;
395
+ * console.log(set.getRank(30)); // 2;
4707
396
  */
4708
397
  getByRank(k: number): K | undefined;
4709
398
  /**
4710
399
  * Returns the 0-based rank of a key (number of elements that precede it in tree order).
4711
400
  * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
4712
- * @example
4713
- * // Get the rank of a key in sorted order
4714
- * const tree = new TreeSet<number>(
4715
- * [10, 20, 30, 40, 50],
4716
- * { enableOrderStatistic: true }
4717
- * );
4718
- * console.log(tree.getRank(10)); // 0; // smallest → rank 0
4719
- * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
4720
- * console.log(tree.getRank(50)); // 4; // largest → rank 4
4721
- * console.log(tree.getRank(25)); // 2;
401
+ * @example
402
+ * // Get the rank of a key in sorted order
403
+ * const tree = new TreeSet<number>(
404
+ * [10, 20, 30, 40, 50],
405
+ * { enableOrderStatistic: true }
406
+ * );
407
+ * console.log(tree.getRank(10)); // 0; // smallest → rank 0
408
+ * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
409
+ * console.log(tree.getRank(50)); // 4; // largest → rank 4
410
+ * console.log(tree.getRank(25)); // 2;
4722
411
  */
4723
412
  getRank(key: K): number;
4724
413
  /**
4725
414
  * Returns elements by rank range (0-indexed, inclusive on both ends).
4726
415
  * @remarks Time O(log n + k). Requires `enableOrderStatistic: true`.
4727
-
4728
-
4729
-
4730
-
4731
-
4732
-
4733
-
4734
-
4735
-
4736
-
4737
-
4738
-
4739
-
4740
-
4741
-
4742
- * @example
4743
- * // Pagination by position in tree order
4744
- * const tree = new TreeSet<number>(
4745
- * [10, 20, 30, 40, 50, 60, 70, 80, 90],
4746
- * { enableOrderStatistic: true }
4747
- * );
4748
- * const pageSize = 3;
4749
- *
4750
- * // Page 1
4751
- * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
4752
- * // Page 2
4753
- * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
4754
- * // Page 3
4755
- * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
416
+ * @example
417
+ * // Pagination by position in tree order
418
+ * const tree = new TreeSet<number>([10, 20, 30, 40, 50, 60, 70, 80, 90], { enableOrderStatistic: true });
419
+ * const pageSize = 3;
420
+ *
421
+ * // Page 1
422
+ * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
423
+ * // Page 2
424
+ * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
425
+ * // Page 3
426
+ * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
4756
427
  */
4757
428
  rangeByRank(start: number, end: number): K[];
4758
- /**
4759
- * Creates a shallow clone of this set.
4760
- * @remarks Time O(n log n), Space O(n)
4761
-
4762
-
4763
-
4764
-
4765
-
4766
-
4767
-
4768
-
4769
-
4770
-
4771
-
4772
-
4773
-
4774
-
4775
-
4776
-
4777
-
4778
-
4779
-
4780
-
4781
-
4782
-
4783
-
4784
-
4785
-
4786
-
4787
-
4788
-
4789
-
4790
-
4791
-
4792
-
4793
-
4794
-
4795
-
4796
-
4797
-
4798
-
4799
-
4800
-
4801
-
4802
-
4803
-
4804
-
4805
-
4806
-
4807
-
4808
-
4809
-
4810
-
4811
-
4812
-
4813
-
4814
-
4815
-
4816
-
4817
-
4818
-
4819
-
4820
-
4821
-
4822
-
4823
-
4824
-
4825
-
4826
-
4827
-
4828
-
4829
-
4830
-
4831
-
4832
-
4833
-
4834
-
4835
-
4836
-
4837
-
4838
-
4839
-
4840
-
4841
-
4842
-
4843
-
4844
-
4845
-
4846
-
4847
-
4848
-
4849
-
4850
-
4851
-
4852
-
4853
-
4854
-
4855
-
4856
-
4857
-
4858
-
4859
-
4860
-
4861
-
4862
-
4863
-
4864
-
4865
-
4866
-
4867
-
4868
-
4869
-
4870
-
4871
-
4872
-
4873
-
4874
-
4875
-
4876
-
4877
-
4878
-
4879
-
4880
-
4881
-
4882
-
4883
-
4884
-
4885
-
4886
-
4887
-
4888
-
4889
-
4890
-
4891
-
4892
-
4893
-
4894
-
4895
-
4896
-
4897
-
4898
-
4899
-
4900
-
4901
-
4902
-
4903
-
4904
-
4905
-
4906
-
4907
-
4908
-
4909
-
4910
-
4911
-
4912
-
4913
-
4914
-
4915
-
4916
-
4917
-
4918
-
4919
-
4920
-
4921
-
4922
-
4923
-
4924
-
4925
-
4926
-
4927
-
4928
-
4929
-
4930
-
4931
-
4932
-
4933
-
4934
-
4935
-
4936
-
4937
-
4938
-
4939
-
4940
-
4941
-
4942
-
4943
-
4944
-
4945
- * @example
4946
- * // Deep clone
4947
- * const ts = new TreeSet<number>([1, 2, 3]);
4948
- * const copy = ts.clone();
4949
- * copy.delete(1);
4950
- * console.log(ts.has(1)); // true;
4951
- */
4952
429
  /**
4953
430
  * Return a new TreeSet containing all elements from both sets.
4954
431
  * @remarks When both sets share the same comparator, uses O(n+m) merge. Otherwise O(m log n).
4955
432
  * @param other - Any iterable of keys.
4956
433
  * @returns A new TreeSet.
4957
- * @example
4958
- * // Merge two sets
4959
- * console.log([...a.union(b)]); // [1, 2, 3, 4, 5, 6, 7];
434
+ * @example
435
+ * // Merge two sets
436
+ * console.log([...a.union(b)]); // [1, 2, 3, 4, 5, 6, 7];
4960
437
  */
4961
438
  union(other: Iterable<K>): TreeSet<K>;
439
+ /**
440
+ * Creates a shallow clone of this set.
441
+ * @remarks Time O(n log n), Space O(n)
442
+ * @example
443
+ * // Deep clone
444
+ * const ts = new TreeSet<number>([1, 2, 3]);
445
+ * const copy = ts.clone();
446
+ * copy.delete(1);
447
+ * console.log(ts.has(1)); // true;
448
+ */
4962
449
  /**
4963
450
  * Return a new TreeSet containing only elements present in both sets.
4964
451
  * @remarks Time O(n+m) with ordered merge when possible, otherwise O(n log m).
4965
452
  * @param other - Any iterable of keys (converted to Set for fast lookup if not a TreeSet).
4966
453
  * @returns A new TreeSet.
4967
- * @example
4968
- * // Find common elements
4969
- * console.log([...a.intersection(b)]); // [3, 4, 5];
454
+ * @example
455
+ * // Find common elements
456
+ * console.log([...a.intersection(b)]); // [3, 4, 5];
4970
457
  */
4971
458
  intersection(other: Iterable<K>): TreeSet<K>;
4972
459
  /**
@@ -4974,9 +461,9 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
4974
461
  * @remarks Time O(n+m) with ordered merge when possible, otherwise O(n log m).
4975
462
  * @param other - Any iterable of keys.
4976
463
  * @returns A new TreeSet.
4977
- * @example
4978
- * // Find exclusive elements
4979
- * console.log([...a.difference(b)]); // [1, 2];
464
+ * @example
465
+ * // Find exclusive elements
466
+ * console.log([...a.difference(b)]); // [1, 2];
4980
467
  */
4981
468
  difference(other: Iterable<K>): TreeSet<K>;
4982
469
  /**
@@ -4984,9 +471,9 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
4984
471
  * @remarks Time O(n+m).
4985
472
  * @param other - Any iterable of keys.
4986
473
  * @returns A new TreeSet.
4987
- * @example
4988
- * // Find symmetric difference
4989
- * console.log([...a.symmetricDifference(b)]); // [1, 2, 6, 7];
474
+ * @example
475
+ * // Find symmetric difference
476
+ * console.log([...a.symmetricDifference(b)]); // [1, 2, 6, 7];
4990
477
  */
4991
478
  symmetricDifference(other: Iterable<K>): TreeSet<K>;
4992
479
  /**
@@ -4994,9 +481,9 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
4994
481
  * @remarks Time O(n).
4995
482
  * @param other - Any iterable of keys (converted to Set for fast lookup if not a TreeSet).
4996
483
  * @returns `true` if this is a subset of other.
4997
- * @example
4998
- * // Check subset
4999
- * console.log(new TreeSet([3, 4]).isSubsetOf(a)); // true;
484
+ * @example
485
+ * // Check subset
486
+ * console.log(new TreeSet([3, 4]).isSubsetOf(a)); // true;
5000
487
  */
5001
488
  isSubsetOf(other: Iterable<K>): boolean;
5002
489
  /**
@@ -5004,9 +491,9 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
5004
491
  * @remarks Time O(m).
5005
492
  * @param other - Any iterable of keys.
5006
493
  * @returns `true` if this is a superset of other.
5007
- * @example
5008
- * // Check superset
5009
- * console.log(a.isSupersetOf(new TreeSet([2, 3]))); // true;
494
+ * @example
495
+ * // Check superset
496
+ * console.log(a.isSupersetOf(new TreeSet([2, 3]))); // true;
5010
497
  */
5011
498
  isSupersetOf(other: Iterable<K>): boolean;
5012
499
  /**
@@ -5014,28 +501,20 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
5014
501
  * @remarks Time O(min(n,m)), can short-circuit on first overlap.
5015
502
  * @param other - Any iterable of keys (converted to Set for fast lookup if not a TreeSet).
5016
503
  * @returns `true` if sets are disjoint.
5017
- * @example
5018
- * // Check disjoint
5019
- * console.log(a.isDisjointFrom(new TreeSet([8, 9]))); // true;
504
+ * @example
505
+ * // Check disjoint
506
+ * console.log(a.isDisjointFrom(new TreeSet([8, 9]))); // true;
5020
507
  */
5021
508
  isDisjointFrom(other: Iterable<K>): boolean;
5022
509
  /**
5023
- * Deep copy
5024
-
5025
-
5026
-
5027
-
5028
-
5029
-
5030
-
5031
-
5032
-
5033
- * @example
5034
- * // Deep clone
5035
- * const ts = new TreeSet<number>([1, 2, 3]);
5036
- * const copy = ts.clone();
5037
- * copy.delete(1);
5038
- * console.log(ts.has(1)); // true;
5039
- */
510
+ * Deep copy
511
+ * @example
512
+ * // Deep clone
513
+ * const ts = new TreeSet<number>([1, 2, 3]);
514
+ * const copy = ts.clone();
515
+ * copy.delete(1);
516
+ * console.log(ts.has(1)); // true;
517
+ */
5040
518
  clone(): TreeSet<K>;
519
+ private _validateKey;
5041
520
  }