binary-tree-typed 2.5.0 → 2.5.1

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 (75) hide show
  1. package/dist/cjs/index.cjs +609 -0
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +609 -0
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +609 -0
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +609 -0
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/base/index.d.ts +1 -0
  10. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  11. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  12. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +252 -0
  13. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +294 -0
  14. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +527 -2
  15. package/dist/types/data-structures/binary-tree/bst.d.ts +505 -1
  16. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +399 -0
  17. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +126 -1
  18. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2881 -382
  19. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2867 -347
  20. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2328 -312
  21. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2671 -277
  22. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  23. package/dist/types/data-structures/graph/directed-graph.d.ts +210 -0
  24. package/dist/types/data-structures/graph/undirected-graph.d.ts +189 -0
  25. package/dist/types/data-structures/hash/hash-map.d.ts +241 -10
  26. package/dist/types/data-structures/heap/heap.d.ts +294 -0
  27. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +360 -3
  28. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +318 -3
  29. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +380 -2
  30. package/dist/types/data-structures/matrix/matrix.d.ts +168 -0
  31. package/dist/types/data-structures/queue/deque.d.ts +319 -4
  32. package/dist/types/data-structures/queue/queue.d.ts +252 -0
  33. package/dist/types/data-structures/stack/stack.d.ts +210 -0
  34. package/dist/types/data-structures/trie/trie.d.ts +256 -4
  35. package/dist/types/interfaces/graph.d.ts +1 -1
  36. package/dist/types/types/common.d.ts +2 -2
  37. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  38. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  39. package/dist/types/types/utils/validate-type.d.ts +4 -4
  40. package/dist/umd/binary-tree-typed.js +609 -0
  41. package/dist/umd/binary-tree-typed.js.map +1 -1
  42. package/dist/umd/binary-tree-typed.min.js +5 -5
  43. package/dist/umd/binary-tree-typed.min.js.map +1 -1
  44. package/package.json +2 -2
  45. package/src/data-structures/base/index.ts +1 -0
  46. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  47. package/src/data-structures/base/linear-base.ts +3 -3
  48. package/src/data-structures/binary-tree/avl-tree.ts +252 -0
  49. package/src/data-structures/binary-tree/binary-indexed-tree.ts +295 -1
  50. package/src/data-structures/binary-tree/binary-tree.ts +527 -2
  51. package/src/data-structures/binary-tree/bst.ts +505 -1
  52. package/src/data-structures/binary-tree/red-black-tree.ts +399 -0
  53. package/src/data-structures/binary-tree/segment-tree.ts +127 -2
  54. package/src/data-structures/binary-tree/tree-map.ts +2958 -459
  55. package/src/data-structures/binary-tree/tree-multi-map.ts +3069 -549
  56. package/src/data-structures/binary-tree/tree-multi-set.ts +2476 -460
  57. package/src/data-structures/binary-tree/tree-set.ts +2816 -422
  58. package/src/data-structures/graph/abstract-graph.ts +4 -4
  59. package/src/data-structures/graph/directed-graph.ts +210 -0
  60. package/src/data-structures/graph/undirected-graph.ts +189 -0
  61. package/src/data-structures/hash/hash-map.ts +246 -15
  62. package/src/data-structures/heap/heap.ts +294 -0
  63. package/src/data-structures/linked-list/doubly-linked-list.ts +360 -3
  64. package/src/data-structures/linked-list/singly-linked-list.ts +318 -3
  65. package/src/data-structures/linked-list/skip-linked-list.ts +380 -2
  66. package/src/data-structures/matrix/matrix.ts +169 -1
  67. package/src/data-structures/queue/deque.ts +320 -5
  68. package/src/data-structures/queue/queue.ts +252 -0
  69. package/src/data-structures/stack/stack.ts +210 -0
  70. package/src/data-structures/trie/trie.ts +257 -5
  71. package/src/interfaces/graph.ts +1 -1
  72. package/src/types/common.ts +2 -2
  73. package/src/types/data-structures/heap/heap.ts +1 -0
  74. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  75. package/src/types/utils/validate-type.ts +4 -4
@@ -92,16 +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
-
105
95
 
106
96
 
107
97
 
@@ -142,23 +132,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
142
132
 
143
133
 
144
134
 
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
-
162
135
 
163
136
 
164
137
 
@@ -207,18 +180,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
207
180
 
208
181
 
209
182
 
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
183
 
223
184
 
224
185
 
@@ -236,6 +197,15 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
236
197
 
237
198
 
238
199
 
200
+ * @example
201
+ * // Check empty
202
+ * console.log(new TreeSet().isEmpty()); // true;
203
+ */
204
+ isEmpty(): boolean;
205
+ private _validateKey;
206
+ /**
207
+ * Add a key to the set (no-op if already present).
208
+ * @remarks Expected time O(log n)
239
209
 
240
210
 
241
211
 
@@ -268,17 +238,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
268
238
 
269
239
 
270
240
 
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
241
 
283
242
 
284
243
 
@@ -317,15 +276,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
317
276
 
318
277
 
319
278
 
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
279
 
330
280
 
331
281
 
@@ -364,16 +314,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
364
314
 
365
315
 
366
316
 
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
317
 
378
318
 
379
319
 
@@ -413,15 +353,23 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
413
353
 
414
354
 
415
355
  * @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];
356
+ * // Unique tags with sorted order
357
+ * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
358
+ *
359
+ * // Duplicates removed, sorted alphabetically
360
+ * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
361
+ * console.log(tags.size); // 4;
362
+ *
363
+ * tags.add('angular');
364
+ * console.log(tags.first()); // 'angular';
365
+ * console.log(tags.last()); // 'typescript';
419
366
  */
420
- values(): IterableIterator<K>;
367
+ add(key: K): this;
421
368
  /**
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.
369
+ * Test whether a key exists.
370
+ * @remarks Expected time O(log n)
371
+
372
+
425
373
 
426
374
 
427
375
 
@@ -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
 
@@ -611,15 +523,25 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
611
523
 
612
524
 
613
525
  * @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];
526
+ * // Checking membership in a sorted collection
527
+ * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
528
+ *
529
+ * console.log(allowed.has('admin')); // true;
530
+ * console.log(allowed.has('guest')); // false;
618
531
  */
619
- filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
532
+ has(key: K): boolean;
620
533
  /**
621
- * Reduce values into a single accumulator.
622
- * @remarks Time O(n), Space O(1)
534
+ * Delete a key.
535
+ * @returns `true` if the key existed; otherwise `false`.
536
+ * @remarks Expected time O(log n)
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
623
545
 
624
546
 
625
547
 
@@ -658,16 +580,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
658
580
 
659
581
 
660
582
 
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
583
 
672
584
 
673
585
 
@@ -704,15 +616,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
704
616
 
705
617
 
706
618
 
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
619
 
717
620
 
718
621
 
@@ -749,15 +652,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
749
652
 
750
653
 
751
654
 
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
655
 
762
656
 
763
657
 
@@ -795,15 +689,16 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
795
689
 
796
690
 
797
691
  * @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;
692
+ * // Removing elements while maintaining order
693
+ * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
694
+ *
695
+ * console.log(nums.delete(5)); // true;
696
+ * console.log(nums.delete(5)); // false; // already gone
697
+ * console.log([...nums]); // [1, 3, 7, 9];
802
698
  */
803
- find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
699
+ delete(key: K): boolean;
804
700
  /**
805
- * Materialize the set into an array of keys.
806
- * @remarks Time O(n), Space O(n)
701
+ * Remove all keys.
807
702
 
808
703
 
809
704
 
@@ -842,15 +737,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
842
737
 
843
738
 
844
739
 
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)
854
740
 
855
741
 
856
742
 
@@ -889,14 +775,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
889
775
 
890
776
 
891
777
 
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
778
 
901
779
 
902
780
 
@@ -908,37 +786,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
908
786
 
909
787
 
910
788
 
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
789
 
943
790
 
944
791
 
@@ -950,15 +797,2456 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
950
797
 
951
798
 
952
799
 
953
- * @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;
958
- */
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
+ * @example
846
+ * // Remove all
847
+ * const ts = new TreeSet<number>([1, 2]);
848
+ * ts.clear();
849
+ * console.log(ts.isEmpty()); // true;
850
+ */
851
+ clear(): void;
852
+ /**
853
+ * Iterate over keys in ascending order.
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+ * @example
998
+ * // Get sorted keys
999
+ * const ts = new TreeSet<number>([30, 10, 20]);
1000
+ * console.log([...ts.keys()]); // [10, 20, 30];
1001
+ */
1002
+ keys(): IterableIterator<K>;
1003
+ /**
1004
+ * Iterate over values in ascending order.
1005
+ *
1006
+ * Note: for Set-like containers, `values()` is the same as `keys()`.
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
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+ * @example
1151
+ * // Get values (same as keys for Set)
1152
+ * const ts = new TreeSet<number>([2, 1, 3]);
1153
+ * console.log([...ts.values()]); // [1, 2, 3];
1154
+ */
1155
+ values(): IterableIterator<K>;
1156
+ /**
1157
+ * Iterate over `[value, value]` pairs (native Set convention).
1158
+ *
1159
+ * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
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
+ * @example
1304
+ * // Iterate entries
1305
+ * const ts = new TreeSet<number>([3, 1, 2]);
1306
+ * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
1307
+ */
1308
+ entries(): IterableIterator<[K, K]>;
1309
+ [Symbol.iterator](): IterableIterator<K>;
1310
+ /**
1311
+ * Visit each value in ascending order.
1312
+ *
1313
+ * Callback follows native Set convention: `(value, value2, set)`.
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
+
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
+ * @example
1458
+ * // Execute for each
1459
+ * const ts = new TreeSet<number>([3, 1, 2]);
1460
+ * const keys: number[] = [];
1461
+ * ts.forEach(k => keys.push(k));
1462
+ * console.log(keys); // [1, 2, 3];
1463
+ */
1464
+ forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: unknown): void;
1465
+ /**
1466
+ * Create a new TreeSet by mapping each value to a new key.
1467
+ *
1468
+ * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1469
+ * @remarks Time O(n log n) expected, Space O(n)
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
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+ * @example
1614
+ * // Transform
1615
+ * const ts = new TreeSet<number>([1, 2, 3]);
1616
+ * const doubled = ts.map(k => k * 2);
1617
+ * console.log([...doubled]); // [2, 4, 6];
1618
+ */
1619
+ map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
1620
+ comparator?: (a: MK, b: MK) => number;
1621
+ }, thisArg?: unknown): TreeSet<MK>;
1622
+ /**
1623
+ * Create a new TreeSet containing only values that satisfy the predicate.
1624
+ * @remarks Time O(n log n) expected, Space O(n)
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+ * @example
1769
+ * // Filter
1770
+ * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
1771
+ * const evens = ts.filter(k => k % 2 === 0);
1772
+ * console.log([...evens]); // [2, 4];
1773
+ */
1774
+ filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
1775
+ /**
1776
+ * Reduce values into a single accumulator.
1777
+ * @remarks Time O(n), Space O(1)
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
+ * @example
1922
+ * // Aggregate
1923
+ * const ts = new TreeSet<number>([1, 2, 3]);
1924
+ * const sum = ts.reduce((acc, k) => acc + k, 0);
1925
+ * console.log(sum); // 6;
1926
+ */
1927
+ reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
1928
+ /**
1929
+ * Test whether all values satisfy a predicate.
1930
+ * @remarks Time O(n), Space O(1)
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
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
+ * @example
2073
+ * // Test all
2074
+ * const ts = new TreeSet<number>([2, 4, 6]);
2075
+ * console.log(ts.every(k => k > 0)); // true;
2076
+ */
2077
+ every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2078
+ /**
2079
+ * Test whether any value satisfies a predicate.
2080
+ * @remarks Time O(n), Space O(1)
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
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
+ * @example
2223
+ * // Test any
2224
+ * const ts = new TreeSet<number>([1, 3, 5]);
2225
+ * console.log(ts.some(k => k === 3)); // true;
2226
+ */
2227
+ some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2228
+ /**
2229
+ * Find the first value that satisfies a predicate.
2230
+ * @remarks Time O(n), Space O(1)
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
+
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+
2372
+ * @example
2373
+ * // Find entry
2374
+ * const ts = new TreeSet<number>([1, 2, 3]);
2375
+ * const found = ts.find(k => k === 2);
2376
+ * console.log(found); // 2;
2377
+ */
2378
+ find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
2379
+ /**
2380
+ * Materialize the set into an array of keys.
2381
+ * @remarks Time O(n), Space O(n)
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
+ * @example
2526
+ * // Convert to array
2527
+ * const ts = new TreeSet<number>([3, 1, 2]);
2528
+ * console.log(ts.toArray()); // [1, 2, 3];
2529
+ */
2530
+ toArray(): K[];
2531
+ /**
2532
+ * Print a human-friendly representation.
2533
+ * @remarks Time O(n), Space O(n)
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+
2541
+
2542
+
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+
2589
+
2590
+
2591
+
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+
2632
+
2633
+
2634
+
2635
+
2636
+
2637
+
2638
+
2639
+
2640
+
2641
+
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2655
+
2656
+
2657
+
2658
+
2659
+
2660
+
2661
+
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+ * @example
2678
+ * // Display tree
2679
+ * const ts = new TreeSet<number>([1, 2, 3]);
2680
+ * expect(() => ts.print()).not.toThrow();
2681
+ */
2682
+ print(): void;
2683
+ /**
2684
+ * Smallest key in the set.
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
+ * @example
2718
+ * // Student grade ranking with custom comparator
2719
+ * interface Student {
2720
+ * name: string;
2721
+ * gpa: number;
2722
+ * }
2723
+ *
2724
+ * const ranking = new TreeSet<Student>(
2725
+ * [
2726
+ * { name: 'Alice', gpa: 3.8 },
2727
+ * { name: 'Bob', gpa: 3.5 },
2728
+ * { name: 'Charlie', gpa: 3.9 },
2729
+ * { name: 'Diana', gpa: 3.5 }
2730
+ * ],
2731
+ * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
2732
+ * );
2733
+ *
2734
+ * // Sorted by GPA descending, then name ascending
2735
+ * const names = [...ranking].map(s => s.name);
2736
+ * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
2737
+ *
2738
+ * // Top student
2739
+ * console.log(ranking.first()?.name); // 'Charlie';
2740
+ *
2741
+ * // Filter students with GPA >= 3.8
2742
+ * const honors = ranking.filter(s => s.gpa >= 3.8);
2743
+ * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
2744
+ */
2745
+ first(): K | undefined;
2746
+ /**
2747
+ * Largest key in the set.
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2758
+
2759
+
2760
+
2761
+
2762
+
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+
2776
+
2777
+
2778
+
2779
+
2780
+ * @example
2781
+ * // Get the maximum element
2782
+ * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
2783
+ * console.log(temps.last()); // 30;
2784
+ * console.log(temps.first()); // 15;
2785
+ */
959
2786
  last(): K | undefined;
960
2787
  /**
961
- * Remove and return the smallest key.
2788
+ * Remove and return the smallest key.
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
+ * @example
2822
+ * // Remove and return minimum
2823
+ * const queue = new TreeSet<number>([5, 1, 8, 3]);
2824
+ *
2825
+ * console.log(queue.pollFirst()); // 1;
2826
+ * console.log(queue.pollFirst()); // 3;
2827
+ * console.log(queue.size); // 2;
2828
+ */
2829
+ pollFirst(): K | undefined;
2830
+ /**
2831
+ * Remove and return the largest key.
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
+ * @example
2865
+ * // Remove and return maximum
2866
+ * const stack = new TreeSet<number>([10, 20, 30]);
2867
+ *
2868
+ * console.log(stack.pollLast()); // 30;
2869
+ * console.log(stack.size); // 2;
2870
+ */
2871
+ pollLast(): K | undefined;
2872
+ /**
2873
+ * Smallest key that is >= the given key.
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
+
2970
+
2971
+
2972
+
2973
+
2974
+
2975
+
2976
+
2977
+
2978
+
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+ * @example
2997
+ * // Finding nearest available time slot
2998
+ * // Available appointment times (minutes from midnight)
2999
+ * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
3000
+ *
3001
+ * // Customer wants something around 10:30 (630 min)
3002
+ * const nearest = slots.ceiling(630);
3003
+ * console.log(nearest); // 660; // 11:00 AM
3004
+ *
3005
+ * // What's the latest slot before 2:00 PM (840)?
3006
+ * const before2pm = slots.lower(840);
3007
+ * console.log(before2pm); // 720; // 12:00 PM
3008
+ *
3009
+ * // Book the 11:00 slot
3010
+ * slots.delete(660);
3011
+ * console.log(slots.ceiling(630)); // 720;
3012
+ */
3013
+ ceiling(key: K): K | undefined;
3014
+ /**
3015
+ * Largest key that is <= the given key.
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
+ * @example
3139
+ * // Largest element ≤ target
3140
+ * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
3141
+ *
3142
+ * // Current width is 800 → which breakpoint applies?
3143
+ * console.log(breakpoints.floor(800)); // 768;
3144
+ * console.log(breakpoints.floor(1024)); // 1024; // exact match
3145
+ * console.log(breakpoints.floor(100)); // undefined;
3146
+ */
3147
+ floor(key: K): K | undefined;
3148
+ /**
3149
+ * Smallest key that is > the given key.
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
+
962
3250
 
963
3251
 
964
3252
 
@@ -970,17 +3258,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
970
3258
 
971
3259
 
972
3260
 
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
3261
 
985
3262
 
986
3263
 
@@ -993,15 +3270,23 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
993
3270
 
994
3271
 
995
3272
  * @example
996
- * // Remove and return maximum
997
- * const stack = new TreeSet<number>([10, 20, 30]);
3273
+ * // Smallest element strictly > target
3274
+ * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
998
3275
  *
999
- * console.log(stack.pollLast()); // 30;
1000
- * console.log(stack.size); // 2;
3276
+ * console.log(levels.higher(10)); // 25;
3277
+ * console.log(levels.higher(100)); // undefined;
1001
3278
  */
1002
- pollLast(): K | undefined;
3279
+ higher(key: K): K | undefined;
1003
3280
  /**
1004
- * Smallest key that is >= the given key.
3281
+ * Largest key that is < the given key.
3282
+
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+
3289
+
1005
3290
 
1006
3291
 
1007
3292
 
@@ -1040,26 +3325,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1040
3325
 
1041
3326
 
1042
3327
 
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
3328
 
1064
3329
 
1065
3330
 
@@ -1098,18 +3363,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1098
3363
 
1099
3364
 
1100
3365
 
1101
- * @example
1102
- * // Largest element ≤ target
1103
- * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
1104
- *
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;
1109
- */
1110
- floor(key: K): K | undefined;
1111
- /**
1112
- * Smallest key that is > the given key.
1113
3366
 
1114
3367
 
1115
3368
 
@@ -1149,15 +3402,64 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1149
3402
 
1150
3403
 
1151
3404
  * @example
1152
- * // Smallest element strictly > target
1153
- * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
3405
+ * // Largest element strictly < target
3406
+ * const tiers = new TreeSet<number>([100, 200, 500, 1000]);
1154
3407
  *
1155
- * console.log(levels.higher(10)); // 25;
1156
- * console.log(levels.higher(100)); // undefined;
3408
+ * console.log(tiers.lower(500)); // 200;
3409
+ * console.log(tiers.lower(100)); // undefined;
1157
3410
  */
1158
- higher(key: K): K | undefined;
3411
+ lower(key: K): K | undefined;
1159
3412
  /**
1160
- * Largest key that is < the given key.
3413
+ * Return all keys in a given range.
3414
+ *
3415
+ * @param range `[low, high]`
3416
+ * @param options Inclusive/exclusive bounds (defaults to inclusive).
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
+
1161
3463
 
1162
3464
 
1163
3465
 
@@ -1196,19 +3498,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1196
3498
 
1197
3499
 
1198
3500
 
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
3501
 
1213
3502
 
1214
3503
 
@@ -1287,6 +3576,111 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1287
3576
 
1288
3577
 
1289
3578
 
3579
+
3580
+
3581
+
3582
+
3583
+
3584
+
3585
+
3586
+
3587
+
3588
+
3589
+
3590
+
3591
+
3592
+
3593
+
3594
+
3595
+
3596
+
3597
+
3598
+
3599
+
3600
+
3601
+
3602
+
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+
3614
+
3615
+
3616
+
3617
+
3618
+
3619
+
3620
+
3621
+
3622
+
3623
+
3624
+
3625
+
3626
+
3627
+
3628
+
3629
+
3630
+
3631
+
3632
+
3633
+
3634
+
3635
+
3636
+
3637
+
3638
+
3639
+
3640
+
3641
+
3642
+
3643
+
3644
+
3645
+
3646
+
3647
+
3648
+
3649
+
3650
+
3651
+
3652
+
3653
+
3654
+
3655
+
3656
+
3657
+
3658
+
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
+
1290
3684
 
1291
3685
 
1292
3686