data-structure-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.
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
- package/CHANGELOG.md +5 -1
- package/README.md +124 -29
- package/dist/cjs/binary-tree.cjs +26282 -0
- package/dist/cjs/graph.cjs +5422 -0
- package/dist/cjs/hash.cjs +1310 -0
- package/dist/cjs/heap.cjs +1602 -0
- package/dist/cjs/index.cjs +31257 -14673
- package/dist/cjs/linked-list.cjs +4576 -0
- package/dist/cjs/matrix.cjs +1080 -0
- package/dist/cjs/priority-queue.cjs +1376 -0
- package/dist/cjs/queue.cjs +4264 -0
- package/dist/cjs/stack.cjs +907 -0
- package/dist/cjs/trie.cjs +1223 -0
- package/dist/cjs-legacy/binary-tree.cjs +26319 -0
- package/dist/cjs-legacy/graph.cjs +5420 -0
- package/dist/cjs-legacy/hash.cjs +1310 -0
- package/dist/cjs-legacy/heap.cjs +1599 -0
- package/dist/cjs-legacy/index.cjs +31268 -14679
- package/dist/cjs-legacy/linked-list.cjs +4582 -0
- package/dist/cjs-legacy/matrix.cjs +1083 -0
- package/dist/cjs-legacy/priority-queue.cjs +1374 -0
- package/dist/cjs-legacy/queue.cjs +4262 -0
- package/dist/cjs-legacy/stack.cjs +907 -0
- package/dist/cjs-legacy/trie.cjs +1222 -0
- package/dist/esm/binary-tree.mjs +26267 -0
- package/dist/esm/graph.mjs +5409 -0
- package/dist/esm/hash.mjs +1307 -0
- package/dist/esm/heap.mjs +1596 -0
- package/dist/esm/index.mjs +31254 -14674
- package/dist/esm/linked-list.mjs +4569 -0
- package/dist/esm/matrix.mjs +1076 -0
- package/dist/esm/priority-queue.mjs +1372 -0
- package/dist/esm/queue.mjs +4260 -0
- package/dist/esm/stack.mjs +905 -0
- package/dist/esm/trie.mjs +1220 -0
- package/dist/esm-legacy/binary-tree.mjs +26304 -0
- package/dist/esm-legacy/graph.mjs +5407 -0
- package/dist/esm-legacy/hash.mjs +1307 -0
- package/dist/esm-legacy/heap.mjs +1593 -0
- package/dist/esm-legacy/index.mjs +31265 -14680
- package/dist/esm-legacy/linked-list.mjs +4575 -0
- package/dist/esm-legacy/matrix.mjs +1079 -0
- package/dist/esm-legacy/priority-queue.mjs +1370 -0
- package/dist/esm-legacy/queue.mjs +4258 -0
- package/dist/esm-legacy/stack.mjs +905 -0
- package/dist/esm-legacy/trie.mjs +1219 -0
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
- package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
- package/dist/types/data-structures/heap/heap.d.ts +336 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
- package/dist/types/data-structures/queue/deque.d.ts +364 -4
- package/dist/types/data-structures/queue/queue.d.ts +288 -0
- package/dist/types/data-structures/stack/stack.d.ts +240 -0
- package/dist/types/data-structures/trie/trie.d.ts +292 -4
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/data-structure-typed.js +31196 -14608
- package/dist/umd/data-structure-typed.min.js +11 -5
- package/docs-site-docusaurus/README.md +41 -0
- package/docs-site-docusaurus/docs/api/README.md +52 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6644 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
- package/docs-site-docusaurus/docs/api/classes/BST.md +6293 -0
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
- package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
- package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
- package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6888 -0
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
- package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1389 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1591 -0
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1246 -0
- package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
- package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/architecture.md +615 -0
- package/docs-site-docusaurus/docs/guide/concepts.md +451 -0
- package/docs-site-docusaurus/docs/guide/faq.md +180 -0
- package/docs-site-docusaurus/docs/guide/guides.md +597 -0
- package/docs-site-docusaurus/docs/guide/installation.md +62 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +825 -0
- package/docs-site-docusaurus/docs/guide/overview.md +645 -0
- package/docs-site-docusaurus/docs/guide/performance.md +835 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +104 -0
- package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
- package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
- package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
- package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
- package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
- package/docs-site-docusaurus/docusaurus.config.ts +159 -0
- package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
- package/docs-site-docusaurus/package-lock.json +18667 -0
- package/docs-site-docusaurus/package.json +50 -0
- package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
- package/docs-site-docusaurus/sidebars.ts +23 -0
- package/docs-site-docusaurus/sort-protected.mjs +87 -0
- package/docs-site-docusaurus/src/css/custom.css +96 -0
- package/docs-site-docusaurus/src/pages/index.module.css +13 -0
- package/docs-site-docusaurus/src/pages/index.tsx +120 -0
- package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
- package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
- package/docs-site-docusaurus/static/.nojekyll +0 -0
- package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
- package/docs-site-docusaurus/static/img/favicon.ico +0 -0
- package/docs-site-docusaurus/static/img/favicon.png +0 -0
- package/docs-site-docusaurus/static/img/logo-180.png +0 -0
- package/docs-site-docusaurus/static/img/logo.jpg +0 -0
- package/docs-site-docusaurus/static/img/logo.png +0 -0
- package/docs-site-docusaurus/static/img/logo.svg +1 -0
- package/docs-site-docusaurus/static/img/og-image.png +0 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docs-site-docusaurus/static/llms.txt +37 -0
- package/docs-site-docusaurus/static/robots.txt +4 -0
- package/docs-site-docusaurus/typedoc.json +23 -0
- package/llms.txt +37 -0
- package/package.json +159 -55
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +287 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +327 -5
- package/src/data-structures/binary-tree/binary-tree.ts +581 -6
- package/src/data-structures/binary-tree/bst.ts +922 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +453 -0
- package/src/data-structures/binary-tree/segment-tree.ts +139 -2
- package/src/data-structures/binary-tree/tree-map.ts +3300 -495
- package/src/data-structures/binary-tree/tree-multi-map.ts +3384 -563
- package/src/data-structures/binary-tree/tree-multi-set.ts +2757 -493
- package/src/data-structures/binary-tree/tree-set.ts +3122 -440
- package/src/data-structures/graph/abstract-graph.ts +6 -6
- package/src/data-structures/graph/directed-graph.ts +230 -0
- package/src/data-structures/graph/undirected-graph.ts +207 -0
- package/src/data-structures/hash/hash-map.ts +270 -19
- package/src/data-structures/heap/heap.ts +326 -4
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +394 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +348 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +421 -7
- package/src/data-structures/matrix/matrix.ts +194 -10
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +350 -5
- package/src/data-structures/queue/queue.ts +276 -0
- package/src/data-structures/stack/stack.ts +230 -0
- package/src/data-structures/trie/trie.ts +283 -7
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/binary-tree/bst.ts +1 -0
- package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
- package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
- package/vercel.json +6 -0
- package/dist/leetcode/avl-tree-counter.mjs +0 -2957
- package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
- package/dist/leetcode/avl-tree.mjs +0 -2720
- package/dist/leetcode/binary-tree.mjs +0 -1594
- package/dist/leetcode/bst.mjs +0 -2398
- package/dist/leetcode/deque.mjs +0 -683
- package/dist/leetcode/directed-graph.mjs +0 -1733
- package/dist/leetcode/doubly-linked-list.mjs +0 -709
- package/dist/leetcode/hash-map.mjs +0 -493
- package/dist/leetcode/heap.mjs +0 -542
- package/dist/leetcode/max-heap.mjs +0 -375
- package/dist/leetcode/max-priority-queue.mjs +0 -383
- package/dist/leetcode/min-heap.mjs +0 -363
- package/dist/leetcode/min-priority-queue.mjs +0 -371
- package/dist/leetcode/priority-queue.mjs +0 -363
- package/dist/leetcode/queue.mjs +0 -943
- package/dist/leetcode/red-black-tree.mjs +0 -2765
- package/dist/leetcode/singly-linked-list.mjs +0 -754
- package/dist/leetcode/stack.mjs +0 -217
- package/dist/leetcode/tree-counter.mjs +0 -3039
- package/dist/leetcode/tree-multi-map.mjs +0 -2913
- package/dist/leetcode/trie.mjs +0 -413
- package/dist/leetcode/undirected-graph.mjs +0 -1650
|
@@ -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
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
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
|
-
* //
|
|
955
|
-
* const
|
|
956
|
-
*
|
|
957
|
-
*
|
|
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
|
-
|
|
3438
|
+
floor(key: K): K | undefined;
|
|
960
3439
|
/**
|
|
961
|
-
*
|
|
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
|
|
1103
|
-
* const
|
|
3720
|
+
* // Largest element strictly < target
|
|
3721
|
+
* const tiers = new TreeSet<number>([100, 200, 500, 1000]);
|
|
1104
3722
|
*
|
|
1105
|
-
* //
|
|
1106
|
-
* console.log(
|
|
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
|
-
|
|
3726
|
+
lower(key: K): K | undefined;
|
|
1111
3727
|
/**
|
|
1112
|
-
*
|
|
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
|
|