binary-tree-typed 2.5.0 → 2.5.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 (90) hide show
  1. package/dist/cjs/index.cjs +771 -68
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +771 -68
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +771 -69
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +771 -69
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/common/error.d.ts +9 -0
  10. package/dist/types/common/index.d.ts +1 -1
  11. package/dist/types/data-structures/base/index.d.ts +1 -0
  12. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  13. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  14. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
  15. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
  16. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
  17. package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
  18. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
  19. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
  20. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
  21. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
  22. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
  23. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
  24. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  25. package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
  26. package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
  27. package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
  28. package/dist/types/data-structures/heap/heap.d.ts +336 -0
  29. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
  30. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
  31. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
  32. package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
  33. package/dist/types/data-structures/queue/deque.d.ts +364 -4
  34. package/dist/types/data-structures/queue/queue.d.ts +288 -0
  35. package/dist/types/data-structures/stack/stack.d.ts +240 -0
  36. package/dist/types/data-structures/trie/trie.d.ts +292 -4
  37. package/dist/types/interfaces/graph.d.ts +1 -1
  38. package/dist/types/types/common.d.ts +2 -2
  39. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  40. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  41. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  42. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  43. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  44. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  45. package/dist/types/types/utils/validate-type.d.ts +4 -4
  46. package/dist/umd/binary-tree-typed.js +773 -71
  47. package/dist/umd/binary-tree-typed.js.map +1 -1
  48. package/dist/umd/binary-tree-typed.min.js +5 -5
  49. package/dist/umd/binary-tree-typed.min.js.map +1 -1
  50. package/package.json +2 -2
  51. package/src/common/error.ts +19 -1
  52. package/src/common/index.ts +1 -1
  53. package/src/data-structures/base/index.ts +1 -0
  54. package/src/data-structures/base/iterable-element-base.ts +3 -2
  55. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  56. package/src/data-structures/base/linear-base.ts +3 -3
  57. package/src/data-structures/binary-tree/avl-tree.ts +299 -0
  58. package/src/data-structures/binary-tree/binary-indexed-tree.ts +341 -5
  59. package/src/data-structures/binary-tree/binary-tree.ts +606 -6
  60. package/src/data-structures/binary-tree/bst.ts +946 -7
  61. package/src/data-structures/binary-tree/red-black-tree.ts +472 -0
  62. package/src/data-structures/binary-tree/segment-tree.ts +145 -2
  63. package/src/data-structures/binary-tree/tree-map.ts +3423 -499
  64. package/src/data-structures/binary-tree/tree-multi-map.ts +3537 -596
  65. package/src/data-structures/binary-tree/tree-multi-set.ts +2855 -495
  66. package/src/data-structures/binary-tree/tree-set.ts +3209 -413
  67. package/src/data-structures/graph/abstract-graph.ts +6 -6
  68. package/src/data-structures/graph/directed-graph.ts +240 -0
  69. package/src/data-structures/graph/undirected-graph.ts +216 -0
  70. package/src/data-structures/hash/hash-map.ts +281 -19
  71. package/src/data-structures/heap/heap.ts +340 -4
  72. package/src/data-structures/heap/max-heap.ts +2 -2
  73. package/src/data-structures/linked-list/doubly-linked-list.ts +411 -3
  74. package/src/data-structures/linked-list/singly-linked-list.ts +363 -3
  75. package/src/data-structures/linked-list/skip-linked-list.ts +439 -7
  76. package/src/data-structures/matrix/matrix.ts +202 -10
  77. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  78. package/src/data-structures/queue/deque.ts +365 -5
  79. package/src/data-structures/queue/queue.ts +288 -0
  80. package/src/data-structures/stack/stack.ts +240 -0
  81. package/src/data-structures/trie/trie.ts +295 -7
  82. package/src/interfaces/graph.ts +1 -1
  83. package/src/types/common.ts +2 -2
  84. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  85. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  86. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  87. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  88. package/src/types/data-structures/heap/heap.ts +1 -0
  89. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  90. package/src/types/utils/validate-type.ts +4 -4
@@ -92,15 +92,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
92
92
 
93
93
 
94
94
 
95
- * @example
96
- * // Check empty
97
- * console.log(new TreeSet().isEmpty()); // true;
98
- */
99
- isEmpty(): boolean;
100
- private _validateKey;
101
- /**
102
- * Add a key to the set (no-op if already present).
103
- * @remarks Expected time O(log n)
104
95
 
105
96
 
106
97
 
@@ -142,22 +133,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
142
133
 
143
134
 
144
135
 
145
- * @example
146
- * // Unique tags with sorted order
147
- * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
148
- *
149
- * // Duplicates removed, sorted alphabetically
150
- * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
151
- * console.log(tags.size); // 4;
152
- *
153
- * tags.add('angular');
154
- * console.log(tags.first()); // 'angular';
155
- * console.log(tags.last()); // 'typescript';
156
- */
157
- add(key: K): this;
158
- /**
159
- * Test whether a key exists.
160
- * @remarks Expected time O(log n)
161
136
 
162
137
 
163
138
 
@@ -207,18 +182,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
207
182
 
208
183
 
209
184
 
210
- * @example
211
- * // Checking membership in a sorted collection
212
- * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
213
- *
214
- * console.log(allowed.has('admin')); // true;
215
- * console.log(allowed.has('guest')); // false;
216
- */
217
- has(key: K): boolean;
218
- /**
219
- * Delete a key.
220
- * @returns `true` if the key existed; otherwise `false`.
221
- * @remarks Expected time O(log n)
222
185
 
223
186
 
224
187
 
@@ -249,6 +212,15 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
249
212
 
250
213
 
251
214
 
215
+ * @example
216
+ * // Check empty
217
+ * console.log(new TreeSet().isEmpty()); // true;
218
+ */
219
+ isEmpty(): boolean;
220
+ private _validateKey;
221
+ /**
222
+ * Add a key to the set (no-op if already present).
223
+ * @remarks Expected time O(log n)
252
224
 
253
225
 
254
226
 
@@ -268,17 +240,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
268
240
 
269
241
 
270
242
 
271
- * @example
272
- * // Removing elements while maintaining order
273
- * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
274
- *
275
- * console.log(nums.delete(5)); // true;
276
- * console.log(nums.delete(5)); // false; // already gone
277
- * console.log([...nums]); // [1, 3, 7, 9];
278
- */
279
- delete(key: K): boolean;
280
- /**
281
- * Remove all keys.
282
243
 
283
244
 
284
245
 
@@ -317,15 +278,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
317
278
 
318
279
 
319
280
 
320
- * @example
321
- * // Remove all
322
- * const ts = new TreeSet<number>([1, 2]);
323
- * ts.clear();
324
- * console.log(ts.isEmpty()); // true;
325
- */
326
- clear(): void;
327
- /**
328
- * Iterate over keys in ascending order.
329
281
 
330
282
 
331
283
 
@@ -364,16 +316,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
364
316
 
365
317
 
366
318
 
367
- * @example
368
- * // Get sorted keys
369
- * const ts = new TreeSet<number>([30, 10, 20]);
370
- * console.log([...ts.keys()]); // [10, 20, 30];
371
- */
372
- keys(): IterableIterator<K>;
373
- /**
374
- * Iterate over values in ascending order.
375
- *
376
- * Note: for Set-like containers, `values()` is the same as `keys()`.
377
319
 
378
320
 
379
321
 
@@ -412,16 +354,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
412
354
 
413
355
 
414
356
 
415
- * @example
416
- * // Get values (same as keys for Set)
417
- * const ts = new TreeSet<number>([2, 1, 3]);
418
- * console.log([...ts.values()]); // [1, 2, 3];
419
- */
420
- values(): IterableIterator<K>;
421
- /**
422
- * Iterate over `[value, value]` pairs (native Set convention).
423
- *
424
- * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
425
357
 
426
358
 
427
359
 
@@ -450,6 +382,22 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
450
382
 
451
383
 
452
384
 
385
+ * @example
386
+ * // Unique tags with sorted order
387
+ * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
388
+ *
389
+ * // Duplicates removed, sorted alphabetically
390
+ * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
391
+ * console.log(tags.size); // 4;
392
+ *
393
+ * tags.add('angular');
394
+ * console.log(tags.first()); // 'angular';
395
+ * console.log(tags.last()); // 'typescript';
396
+ */
397
+ add(key: K): this;
398
+ /**
399
+ * Test whether a key exists.
400
+ * @remarks Expected time O(log n)
453
401
 
454
402
 
455
403
 
@@ -460,17 +408,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
460
408
 
461
409
 
462
410
 
463
- * @example
464
- * // Iterate entries
465
- * const ts = new TreeSet<number>([3, 1, 2]);
466
- * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
467
- */
468
- entries(): IterableIterator<[K, K]>;
469
- [Symbol.iterator](): IterableIterator<K>;
470
- /**
471
- * Visit each value in ascending order.
472
- *
473
- * Callback follows native Set convention: `(value, value2, set)`.
474
411
 
475
412
 
476
413
 
@@ -509,19 +446,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
509
446
 
510
447
 
511
448
 
512
- * @example
513
- * // Execute for each
514
- * const ts = new TreeSet<number>([3, 1, 2]);
515
- * const keys: number[] = [];
516
- * ts.forEach(k => keys.push(k));
517
- * console.log(keys); // [1, 2, 3];
518
- */
519
- forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: any): void;
520
- /**
521
- * Create a new TreeSet by mapping each value to a new key.
522
- *
523
- * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
524
- * @remarks Time O(n log n) expected, Space O(n)
525
449
 
526
450
 
527
451
 
@@ -560,18 +484,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
560
484
 
561
485
 
562
486
 
563
- * @example
564
- * // Transform
565
- * const ts = new TreeSet<number>([1, 2, 3]);
566
- * const doubled = ts.map(k => k * 2);
567
- * console.log([...doubled]); // [2, 4, 6];
568
- */
569
- map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
570
- comparator?: (a: MK, b: MK) => number;
571
- }, thisArg?: unknown): TreeSet<MK>;
572
- /**
573
- * Create a new TreeSet containing only values that satisfy the predicate.
574
- * @remarks Time O(n log n) expected, Space O(n)
575
487
 
576
488
 
577
489
 
@@ -610,16 +522,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
610
522
 
611
523
 
612
524
 
613
- * @example
614
- * // Filter
615
- * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
616
- * const evens = ts.filter(k => k % 2 === 0);
617
- * console.log([...evens]); // [2, 4];
618
- */
619
- filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
620
- /**
621
- * Reduce values into a single accumulator.
622
- * @remarks Time O(n), Space O(1)
623
525
 
624
526
 
625
527
 
@@ -658,16 +560,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
658
560
 
659
561
 
660
562
 
661
- * @example
662
- * // Aggregate
663
- * const ts = new TreeSet<number>([1, 2, 3]);
664
- * const sum = ts.reduce((acc, k) => acc + k, 0);
665
- * console.log(sum); // 6;
666
- */
667
- reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
668
- /**
669
- * Test whether all values satisfy a predicate.
670
- * @remarks Time O(n), Space O(1)
671
563
 
672
564
 
673
565
 
@@ -675,6 +567,18 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
675
567
 
676
568
 
677
569
 
570
+ * @example
571
+ * // Checking membership in a sorted collection
572
+ * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
573
+ *
574
+ * console.log(allowed.has('admin')); // true;
575
+ * console.log(allowed.has('guest')); // false;
576
+ */
577
+ has(key: K): boolean;
578
+ /**
579
+ * Delete a key.
580
+ * @returns `true` if the key existed; otherwise `false`.
581
+ * @remarks Expected time O(log n)
678
582
 
679
583
 
680
584
 
@@ -704,15 +608,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
704
608
 
705
609
 
706
610
 
707
- * @example
708
- * // Test all
709
- * const ts = new TreeSet<number>([2, 4, 6]);
710
- * console.log(ts.every(k => k > 0)); // true;
711
- */
712
- every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
713
- /**
714
- * Test whether any value satisfies a predicate.
715
- * @remarks Time O(n), Space O(1)
716
611
 
717
612
 
718
613
 
@@ -749,15 +644,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
749
644
 
750
645
 
751
646
 
752
- * @example
753
- * // Test any
754
- * const ts = new TreeSet<number>([1, 3, 5]);
755
- * console.log(ts.some(k => k === 3)); // true;
756
- */
757
- some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
758
- /**
759
- * Find the first value that satisfies a predicate.
760
- * @remarks Time O(n), Space O(1)
761
647
 
762
648
 
763
649
 
@@ -794,16 +680,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
794
680
 
795
681
 
796
682
 
797
- * @example
798
- * // Find entry
799
- * const ts = new TreeSet<number>([1, 2, 3]);
800
- * const found = ts.find(k => k === 2);
801
- * console.log(found); // 2;
802
- */
803
- find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
804
- /**
805
- * Materialize the set into an array of keys.
806
- * @remarks Time O(n), Space O(n)
807
683
 
808
684
 
809
685
 
@@ -842,15 +718,2654 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
842
718
 
843
719
 
844
720
 
845
- * @example
846
- * // Convert to array
847
- * const ts = new TreeSet<number>([3, 1, 2]);
848
- * console.log(ts.toArray()); // [1, 2, 3];
849
- */
850
- toArray(): K[];
851
- /**
852
- * Print a human-friendly representation.
853
- * @remarks Time O(n), Space O(n)
721
+
722
+
723
+
724
+
725
+
726
+
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
+ * @example
752
+ * // Removing elements while maintaining order
753
+ * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
754
+ *
755
+ * console.log(nums.delete(5)); // true;
756
+ * console.log(nums.delete(5)); // false; // already gone
757
+ * console.log([...nums]); // [1, 3, 7, 9];
758
+ */
759
+ delete(key: K): boolean;
760
+ /**
761
+ * Remove all keys.
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
+ * @example
921
+ * // Remove all
922
+ * const ts = new TreeSet<number>([1, 2]);
923
+ * ts.clear();
924
+ * console.log(ts.isEmpty()); // true;
925
+ */
926
+ clear(): void;
927
+ /**
928
+ * Iterate over keys in ascending order.
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
+
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
+ * @example
1088
+ * // Get sorted keys
1089
+ * const ts = new TreeSet<number>([30, 10, 20]);
1090
+ * console.log([...ts.keys()]); // [10, 20, 30];
1091
+ */
1092
+ keys(): IterableIterator<K>;
1093
+ /**
1094
+ * Iterate over values in ascending order.
1095
+ *
1096
+ * Note: for Set-like containers, `values()` is the same as `keys()`.
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
+ * @example
1256
+ * // Get values (same as keys for Set)
1257
+ * const ts = new TreeSet<number>([2, 1, 3]);
1258
+ * console.log([...ts.values()]); // [1, 2, 3];
1259
+ */
1260
+ values(): IterableIterator<K>;
1261
+ /**
1262
+ * Iterate over `[value, value]` pairs (native Set convention).
1263
+ *
1264
+ * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
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
+
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
+ * @example
1424
+ * // Iterate entries
1425
+ * const ts = new TreeSet<number>([3, 1, 2]);
1426
+ * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
1427
+ */
1428
+ entries(): IterableIterator<[K, K]>;
1429
+ [Symbol.iterator](): IterableIterator<K>;
1430
+ /**
1431
+ * Visit each value in ascending order.
1432
+ *
1433
+ * Callback follows native Set convention: `(value, value2, set)`.
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
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
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
+ * @example
1593
+ * // Execute for each
1594
+ * const ts = new TreeSet<number>([3, 1, 2]);
1595
+ * const keys: number[] = [];
1596
+ * ts.forEach(k => keys.push(k));
1597
+ * console.log(keys); // [1, 2, 3];
1598
+ */
1599
+ forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: unknown): void;
1600
+ /**
1601
+ * Create a new TreeSet by mapping each value to a new key.
1602
+ *
1603
+ * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1604
+ * @remarks Time O(n log n) expected, Space O(n)
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
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+ * @example
1764
+ * // Transform
1765
+ * const ts = new TreeSet<number>([1, 2, 3]);
1766
+ * const doubled = ts.map(k => k * 2);
1767
+ * console.log([...doubled]); // [2, 4, 6];
1768
+ */
1769
+ map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
1770
+ comparator?: (a: MK, b: MK) => number;
1771
+ }, thisArg?: unknown): TreeSet<MK>;
1772
+ /**
1773
+ * Create a new TreeSet containing only values that satisfy the predicate.
1774
+ * @remarks Time O(n log n) expected, Space O(n)
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
+ * @example
1934
+ * // Filter
1935
+ * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
1936
+ * const evens = ts.filter(k => k % 2 === 0);
1937
+ * console.log([...evens]); // [2, 4];
1938
+ */
1939
+ filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
1940
+ /**
1941
+ * Reduce values into a single accumulator.
1942
+ * @remarks Time O(n), Space O(1)
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
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
+
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
+ * @example
2102
+ * // Aggregate
2103
+ * const ts = new TreeSet<number>([1, 2, 3]);
2104
+ * const sum = ts.reduce((acc, k) => acc + k, 0);
2105
+ * console.log(sum); // 6;
2106
+ */
2107
+ reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
2108
+ /**
2109
+ * Test whether all values satisfy a predicate.
2110
+ * @remarks Time O(n), Space O(1)
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
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
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
+ * @example
2268
+ * // Test all
2269
+ * const ts = new TreeSet<number>([2, 4, 6]);
2270
+ * console.log(ts.every(k => k > 0)); // true;
2271
+ */
2272
+ every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2273
+ /**
2274
+ * Test whether any value satisfies a predicate.
2275
+ * @remarks Time O(n), Space O(1)
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
+
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
+ * @example
2433
+ * // Test any
2434
+ * const ts = new TreeSet<number>([1, 3, 5]);
2435
+ * console.log(ts.some(k => k === 3)); // true;
2436
+ */
2437
+ some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2438
+ /**
2439
+ * Find the first value that satisfies a predicate.
2440
+ * @remarks Time O(n), Space O(1)
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
+
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
+ * @example
2598
+ * // Find entry
2599
+ * const ts = new TreeSet<number>([1, 2, 3]);
2600
+ * const found = ts.find(k => k === 2);
2601
+ * console.log(found); // 2;
2602
+ */
2603
+ find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
2604
+ /**
2605
+ * Materialize the set into an array of keys.
2606
+ * @remarks Time O(n), Space O(n)
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
+ * @example
2766
+ * // Convert to array
2767
+ * const ts = new TreeSet<number>([3, 1, 2]);
2768
+ * console.log(ts.toArray()); // [1, 2, 3];
2769
+ */
2770
+ toArray(): K[];
2771
+ /**
2772
+ * Print a human-friendly representation.
2773
+ * @remarks Time O(n), Space O(n)
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
+
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
+ * @example
2933
+ * // Display tree
2934
+ * const ts = new TreeSet<number>([1, 2, 3]);
2935
+ * expect(() => ts.print()).not.toThrow();
2936
+ */
2937
+ print(): void;
2938
+ /**
2939
+ * Smallest key in the set.
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
+ * @example
2976
+ * // Student grade ranking with custom comparator
2977
+ * interface Student {
2978
+ * name: string;
2979
+ * gpa: number;
2980
+ * }
2981
+ *
2982
+ * const ranking = new TreeSet<Student>(
2983
+ * [
2984
+ * { name: 'Alice', gpa: 3.8 },
2985
+ * { name: 'Bob', gpa: 3.5 },
2986
+ * { name: 'Charlie', gpa: 3.9 },
2987
+ * { name: 'Diana', gpa: 3.5 }
2988
+ * ],
2989
+ * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
2990
+ * );
2991
+ *
2992
+ * // Sorted by GPA descending, then name ascending
2993
+ * const names = [...ranking].map(s => s.name);
2994
+ * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
2995
+ *
2996
+ * // Top student
2997
+ * console.log(ranking.first()?.name); // 'Charlie';
2998
+ *
2999
+ * // Filter students with GPA >= 3.8
3000
+ * const honors = ranking.filter(s => s.gpa >= 3.8);
3001
+ * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
3002
+ */
3003
+ first(): K | undefined;
3004
+ /**
3005
+ * Largest key in the set.
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
+ * @example
3042
+ * // Get the maximum element
3043
+ * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
3044
+ * console.log(temps.last()); // 30;
3045
+ * console.log(temps.first()); // 15;
3046
+ */
3047
+ last(): K | undefined;
3048
+ /**
3049
+ * Remove and return the smallest key.
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
+ * @example
3086
+ * // Remove and return minimum
3087
+ * const queue = new TreeSet<number>([5, 1, 8, 3]);
3088
+ *
3089
+ * console.log(queue.pollFirst()); // 1;
3090
+ * console.log(queue.pollFirst()); // 3;
3091
+ * console.log(queue.size); // 2;
3092
+ */
3093
+ pollFirst(): K | undefined;
3094
+ /**
3095
+ * Remove and return the largest key.
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
+ * @example
3132
+ * // Remove and return maximum
3133
+ * const stack = new TreeSet<number>([10, 20, 30]);
3134
+ *
3135
+ * console.log(stack.pollLast()); // 30;
3136
+ * console.log(stack.size); // 2;
3137
+ */
3138
+ pollLast(): K | undefined;
3139
+ /**
3140
+ * Smallest key that is >= the given key.
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
+ * @example
3276
+ * // Finding nearest available time slot
3277
+ * // Available appointment times (minutes from midnight)
3278
+ * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
3279
+ *
3280
+ * // Customer wants something around 10:30 (630 min)
3281
+ * const nearest = slots.ceiling(630);
3282
+ * console.log(nearest); // 660; // 11:00 AM
3283
+ *
3284
+ * // What's the latest slot before 2:00 PM (840)?
3285
+ * const before2pm = slots.lower(840);
3286
+ * console.log(before2pm); // 720; // 12:00 PM
3287
+ *
3288
+ * // Book the 11:00 slot
3289
+ * slots.delete(660);
3290
+ * console.log(slots.ceiling(630)); // 720;
3291
+ */
3292
+ ceiling(key: K): K | undefined;
3293
+ /**
3294
+ * Largest key that is <= the given key.
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
+
854
3369
 
855
3370
 
856
3371
 
@@ -889,14 +3404,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
889
3404
 
890
3405
 
891
3406
 
892
- * @example
893
- * // Display tree
894
- * const ts = new TreeSet<number>([1, 2, 3]);
895
- * expect(() => ts.print()).not.toThrow();
896
- */
897
- print(): void;
898
- /**
899
- * Smallest key in the set.
900
3407
 
901
3408
 
902
3409
 
@@ -908,37 +3415,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
908
3415
 
909
3416
 
910
3417
 
911
- * @example
912
- * // Student grade ranking with custom comparator
913
- * interface Student {
914
- * name: string;
915
- * gpa: number;
916
- * }
917
- *
918
- * const ranking = new TreeSet<Student>(
919
- * [
920
- * { name: 'Alice', gpa: 3.8 },
921
- * { name: 'Bob', gpa: 3.5 },
922
- * { name: 'Charlie', gpa: 3.9 },
923
- * { name: 'Diana', gpa: 3.5 }
924
- * ],
925
- * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
926
- * );
927
- *
928
- * // Sorted by GPA descending, then name ascending
929
- * const names = [...ranking].map(s => s.name);
930
- * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
931
- *
932
- * // Top student
933
- * console.log(ranking.first()?.name); // 'Charlie';
934
- *
935
- * // Filter students with GPA >= 3.8
936
- * const honors = ranking.filter(s => s.gpa >= 3.8);
937
- * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
938
- */
939
- first(): K | undefined;
940
- /**
941
- * Largest key in the set.
942
3418
 
943
3419
 
944
3420
 
@@ -951,14 +3427,197 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
951
3427
 
952
3428
 
953
3429
  * @example
954
- * // Get the maximum element
955
- * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
956
- * console.log(temps.last()); // 30;
957
- * console.log(temps.first()); // 15;
3430
+ * // Largest element target
3431
+ * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
3432
+ *
3433
+ * // Current width is 800 → which breakpoint applies?
3434
+ * console.log(breakpoints.floor(800)); // 768;
3435
+ * console.log(breakpoints.floor(1024)); // 1024; // exact match
3436
+ * console.log(breakpoints.floor(100)); // undefined;
958
3437
  */
959
- last(): K | undefined;
3438
+ floor(key: K): K | undefined;
960
3439
  /**
961
- * Remove and return the smallest key.
3440
+ * Smallest key that is > the given key.
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
+
3575
+ * @example
3576
+ * // Smallest element strictly > target
3577
+ * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
3578
+ *
3579
+ * console.log(levels.higher(10)); // 25;
3580
+ * console.log(levels.higher(100)); // undefined;
3581
+ */
3582
+ higher(key: K): K | undefined;
3583
+ /**
3584
+ * Largest key that is < the given key.
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
+
962
3621
 
963
3622
 
964
3623
 
@@ -970,17 +3629,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
970
3629
 
971
3630
 
972
3631
 
973
- * @example
974
- * // Remove and return minimum
975
- * const queue = new TreeSet<number>([5, 1, 8, 3]);
976
- *
977
- * console.log(queue.pollFirst()); // 1;
978
- * console.log(queue.pollFirst()); // 3;
979
- * console.log(queue.size); // 2;
980
- */
981
- pollFirst(): K | undefined;
982
- /**
983
- * Remove and return the largest key.
984
3632
 
985
3633
 
986
3634
 
@@ -992,16 +3640,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
992
3640
 
993
3641
 
994
3642
 
995
- * @example
996
- * // Remove and return maximum
997
- * const stack = new TreeSet<number>([10, 20, 30]);
998
- *
999
- * console.log(stack.pollLast()); // 30;
1000
- * console.log(stack.size); // 2;
1001
- */
1002
- pollLast(): K | undefined;
1003
- /**
1004
- * Smallest key that is >= the given key.
1005
3643
 
1006
3644
 
1007
3645
 
@@ -1040,26 +3678,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1040
3678
 
1041
3679
 
1042
3680
 
1043
- * @example
1044
- * // Finding nearest available time slot
1045
- * // Available appointment times (minutes from midnight)
1046
- * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
1047
- *
1048
- * // Customer wants something around 10:30 (630 min)
1049
- * const nearest = slots.ceiling(630);
1050
- * console.log(nearest); // 660; // 11:00 AM
1051
- *
1052
- * // What's the latest slot before 2:00 PM (840)?
1053
- * const before2pm = slots.lower(840);
1054
- * console.log(before2pm); // 720; // 12:00 PM
1055
- *
1056
- * // Book the 11:00 slot
1057
- * slots.delete(660);
1058
- * console.log(slots.ceiling(630)); // 720;
1059
- */
1060
- ceiling(key: K): K | undefined;
1061
- /**
1062
- * Largest key that is <= the given key.
1063
3681
 
1064
3682
 
1065
3683
 
@@ -1099,17 +3717,38 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1099
3717
 
1100
3718
 
1101
3719
  * @example
1102
- * // Largest element target
1103
- * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
3720
+ * // Largest element strictly < target
3721
+ * const tiers = new TreeSet<number>([100, 200, 500, 1000]);
1104
3722
  *
1105
- * // Current width is 800 → which breakpoint applies?
1106
- * console.log(breakpoints.floor(800)); // 768;
1107
- * console.log(breakpoints.floor(1024)); // 1024; // exact match
1108
- * console.log(breakpoints.floor(100)); // undefined;
3723
+ * console.log(tiers.lower(500)); // 200;
3724
+ * console.log(tiers.lower(100)); // undefined;
1109
3725
  */
1110
- floor(key: K): K | undefined;
3726
+ lower(key: K): K | undefined;
1111
3727
  /**
1112
- * Smallest key that is > the given key.
3728
+ * Return all keys in a given range.
3729
+ *
3730
+ * @param range `[low, high]`
3731
+ * @param options Inclusive/exclusive bounds (defaults to inclusive).
3732
+
3733
+
3734
+
3735
+
3736
+
3737
+
3738
+
3739
+
3740
+
3741
+
3742
+
3743
+
3744
+
3745
+
3746
+
3747
+
3748
+
3749
+
3750
+
3751
+
1113
3752
 
1114
3753
 
1115
3754
 
@@ -1148,16 +3787,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1148
3787
 
1149
3788
 
1150
3789
 
1151
- * @example
1152
- * // Smallest element strictly > target
1153
- * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
1154
- *
1155
- * console.log(levels.higher(10)); // 25;
1156
- * console.log(levels.higher(100)); // undefined;
1157
- */
1158
- higher(key: K): K | undefined;
1159
- /**
1160
- * Largest key that is < the given key.
1161
3790
 
1162
3791
 
1163
3792
 
@@ -1196,19 +3825,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1196
3825
 
1197
3826
 
1198
3827
 
1199
- * @example
1200
- * // Largest element strictly < target
1201
- * const tiers = new TreeSet<number>([100, 200, 500, 1000]);
1202
- *
1203
- * console.log(tiers.lower(500)); // 200;
1204
- * console.log(tiers.lower(100)); // undefined;
1205
- */
1206
- lower(key: K): K | undefined;
1207
- /**
1208
- * Return all keys in a given range.
1209
- *
1210
- * @param range `[low, high]`
1211
- * @param options Inclusive/exclusive bounds (defaults to inclusive).
1212
3828
 
1213
3829
 
1214
3830
 
@@ -1266,6 +3882,55 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1266
3882
  * console.log(blocklist.has(167772800)); // false;
1267
3883
  */
1268
3884
  rangeSearch(range: [K, K], options?: TreeSetRangeOptions): K[];
3885
+ /**
3886
+ * Returns the element at the k-th position in tree order (0-indexed).
3887
+ * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
3888
+
3889
+
3890
+
3891
+ * @example
3892
+ * // Find k-th element in a TreeSet
3893
+ * const set = new TreeSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
3894
+ * console.log(set.getByRank(0)); // 10;
3895
+ * console.log(set.getByRank(2)); // 30;
3896
+ * console.log(set.getRank(30)); // 2;
3897
+ */
3898
+ getByRank(k: number): K | undefined;
3899
+ /**
3900
+ * Returns the 0-based rank of a key (number of elements that precede it in tree order).
3901
+ * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
3902
+ * @example
3903
+ * // Get the rank of a key in sorted order
3904
+ * const tree = new TreeSet<number>(
3905
+ * [10, 20, 30, 40, 50],
3906
+ * { enableOrderStatistic: true }
3907
+ * );
3908
+ * console.log(tree.getRank(10)); // 0; // smallest → rank 0
3909
+ * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
3910
+ * console.log(tree.getRank(50)); // 4; // largest → rank 4
3911
+ * console.log(tree.getRank(25)); // 2;
3912
+ */
3913
+ getRank(key: K): number;
3914
+ /**
3915
+ * Returns elements by rank range (0-indexed, inclusive on both ends).
3916
+ * @remarks Time O(log n + k). Requires `enableOrderStatistic: true`.
3917
+
3918
+ * @example
3919
+ * // Pagination with rangeByRank
3920
+ * const tree = new TreeSet<number>(
3921
+ * [10, 20, 30, 40, 50, 60, 70, 80, 90],
3922
+ * { enableOrderStatistic: true }
3923
+ * );
3924
+ * const pageSize = 3;
3925
+ *
3926
+ * // Page 1
3927
+ * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
3928
+ * // Page 2
3929
+ * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
3930
+ * // Page 3
3931
+ * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
3932
+ */
3933
+ rangeByRank(start: number, end: number): K[];
1269
3934
  /**
1270
3935
  * Creates a shallow clone of this set.
1271
3936
  * @remarks Time O(n log n), Space O(n)
@@ -1287,6 +3952,126 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1287
3952
 
1288
3953
 
1289
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
+
1290
4075
 
1291
4076
 
1292
4077