data-structure-typed 2.5.1 → 2.5.3

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 (184) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/MIGRATION.md +169 -0
  3. package/README.md +135 -23
  4. package/README_CN.md +551 -143
  5. package/SPECIFICATION.md +20 -14
  6. package/SPECIFICATION.zh-CN.md +20 -14
  7. package/dist/cjs/binary-tree.cjs +6460 -1591
  8. package/dist/cjs/graph.cjs +440 -20
  9. package/dist/cjs/hash.cjs +125 -22
  10. package/dist/cjs/heap.cjs +196 -47
  11. package/dist/cjs/index.cjs +8486 -2429
  12. package/dist/cjs/linked-list.cjs +456 -31
  13. package/dist/cjs/matrix.cjs +79 -9
  14. package/dist/cjs/priority-queue.cjs +193 -44
  15. package/dist/cjs/queue.cjs +391 -2
  16. package/dist/cjs/stack.cjs +92 -6
  17. package/dist/cjs/trie.cjs +122 -28
  18. package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
  19. package/dist/cjs-legacy/graph.cjs +440 -20
  20. package/dist/cjs-legacy/hash.cjs +125 -22
  21. package/dist/cjs-legacy/heap.cjs +196 -47
  22. package/dist/cjs-legacy/index.cjs +8654 -2594
  23. package/dist/cjs-legacy/linked-list.cjs +456 -31
  24. package/dist/cjs-legacy/matrix.cjs +79 -9
  25. package/dist/cjs-legacy/priority-queue.cjs +193 -44
  26. package/dist/cjs-legacy/queue.cjs +391 -2
  27. package/dist/cjs-legacy/stack.cjs +92 -6
  28. package/dist/cjs-legacy/trie.cjs +122 -28
  29. package/dist/esm/binary-tree.mjs +6460 -1591
  30. package/dist/esm/graph.mjs +440 -20
  31. package/dist/esm/hash.mjs +125 -22
  32. package/dist/esm/heap.mjs +196 -47
  33. package/dist/esm/index.mjs +8486 -2430
  34. package/dist/esm/linked-list.mjs +456 -31
  35. package/dist/esm/matrix.mjs +79 -9
  36. package/dist/esm/priority-queue.mjs +193 -44
  37. package/dist/esm/queue.mjs +391 -2
  38. package/dist/esm/stack.mjs +92 -6
  39. package/dist/esm/trie.mjs +122 -28
  40. package/dist/esm-legacy/binary-tree.mjs +6484 -1612
  41. package/dist/esm-legacy/graph.mjs +440 -20
  42. package/dist/esm-legacy/hash.mjs +125 -22
  43. package/dist/esm-legacy/heap.mjs +196 -47
  44. package/dist/esm-legacy/index.mjs +8654 -2595
  45. package/dist/esm-legacy/linked-list.mjs +456 -31
  46. package/dist/esm-legacy/matrix.mjs +79 -9
  47. package/dist/esm-legacy/priority-queue.mjs +193 -44
  48. package/dist/esm-legacy/queue.mjs +391 -2
  49. package/dist/esm-legacy/stack.mjs +92 -6
  50. package/dist/esm-legacy/trie.mjs +122 -28
  51. package/dist/types/common/error.d.ts +9 -0
  52. package/dist/types/common/index.d.ts +1 -1
  53. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
  54. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
  55. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
  56. package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
  57. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
  58. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
  59. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
  60. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
  61. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
  62. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
  63. package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
  64. package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
  65. package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
  66. package/dist/types/data-structures/heap/heap.d.ts +154 -12
  67. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
  68. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
  69. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
  70. package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
  71. package/dist/types/data-structures/queue/deque.d.ts +142 -0
  72. package/dist/types/data-structures/queue/queue.d.ts +109 -0
  73. package/dist/types/data-structures/stack/stack.d.ts +82 -2
  74. package/dist/types/data-structures/trie/trie.d.ts +96 -0
  75. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  76. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  77. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  78. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  79. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  80. package/dist/umd/data-structure-typed.js +8623 -2564
  81. package/dist/umd/data-structure-typed.min.js +5 -5
  82. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
  83. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  84. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
  85. package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
  86. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  88. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
  89. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  90. package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
  91. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
  92. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
  93. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  94. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  95. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  96. package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
  97. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  98. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  99. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
  100. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
  101. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
  102. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
  103. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  104. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
  105. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
  106. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  107. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  109. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  110. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  111. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  112. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  113. package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
  114. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
  115. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  116. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
  117. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  118. package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
  119. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  120. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
  121. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
  122. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
  123. package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
  124. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  125. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
  126. package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
  127. package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
  128. package/docs-site-docusaurus/docs/guide/faq.md +233 -0
  129. package/docs-site-docusaurus/docs/guide/guides.md +43 -58
  130. package/docs-site-docusaurus/docs/guide/installation.md +2 -0
  131. package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
  132. package/docs-site-docusaurus/docs/guide/overview.md +132 -11
  133. package/docs-site-docusaurus/docs/guide/performance.md +2 -0
  134. package/docs-site-docusaurus/docs/guide/quick-start.md +31 -0
  135. package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
  136. package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
  137. package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
  138. package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
  139. package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
  140. package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
  141. package/docs-site-docusaurus/docusaurus.config.ts +1 -1
  142. package/docs-site-docusaurus/src/pages/index.tsx +55 -2
  143. package/docs-site-docusaurus/static/llms.txt +37 -0
  144. package/docs-site-docusaurus/typedoc.json +1 -0
  145. package/llms.txt +37 -0
  146. package/package.json +65 -56
  147. package/src/common/error.ts +19 -1
  148. package/src/common/index.ts +1 -1
  149. package/src/data-structures/base/iterable-element-base.ts +3 -2
  150. package/src/data-structures/binary-tree/avl-tree.ts +99 -5
  151. package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
  152. package/src/data-structures/binary-tree/binary-tree.ts +239 -78
  153. package/src/data-structures/binary-tree/bst.ts +542 -13
  154. package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
  155. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  156. package/src/data-structures/binary-tree/tree-map.ts +1223 -261
  157. package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
  158. package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
  159. package/src/data-structures/binary-tree/tree-set.ts +1018 -99
  160. package/src/data-structures/graph/abstract-graph.ts +2 -2
  161. package/src/data-structures/graph/directed-graph.ts +71 -1
  162. package/src/data-structures/graph/undirected-graph.ts +64 -1
  163. package/src/data-structures/hash/hash-map.ts +102 -16
  164. package/src/data-structures/heap/heap.ts +153 -23
  165. package/src/data-structures/heap/max-heap.ts +2 -2
  166. package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
  167. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  168. package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
  169. package/src/data-structures/matrix/matrix.ts +65 -9
  170. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  171. package/src/data-structures/queue/deque.ts +130 -0
  172. package/src/data-structures/queue/queue.ts +109 -0
  173. package/src/data-structures/stack/stack.ts +75 -5
  174. package/src/data-structures/trie/trie.ts +86 -2
  175. package/src/interfaces/binary-tree.ts +1 -9
  176. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  177. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  178. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  179. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  180. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  181. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  182. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  183. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  184. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
@@ -6,7 +6,7 @@
6
6
 
7
7
  # Class: TreeSet\<K, R\>
8
8
 
9
- Defined in: [data-structures/binary-tree/tree-set.ts:26](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L26)
9
+ Defined in: [data-structures/binary-tree/tree-set.ts:26](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L26)
10
10
 
11
11
  An ordered Set backed by a red-black tree.
12
12
 
@@ -44,7 +44,7 @@ An ordered Set backed by a red-black tree.
44
44
  new TreeSet<K, R>(elements?, options?): TreeSet<K, R>;
45
45
  ```
46
46
 
47
- Defined in: [data-structures/binary-tree/tree-set.ts:46](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L46)
47
+ Defined in: [data-structures/binary-tree/tree-set.ts:46](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L46)
48
48
 
49
49
  Create a TreeSet from an iterable of keys or raw elements.
50
50
 
@@ -92,7 +92,7 @@ const set = new TreeSet<number, User>(users, { toElementFn: u => u.id });
92
92
  get size(): number;
93
93
  ```
94
94
 
95
- Defined in: [data-structures/binary-tree/tree-set.ts:101](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L101)
95
+ Defined in: [data-structures/binary-tree/tree-set.ts:101](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L101)
96
96
 
97
97
  Number of elements in the set.
98
98
 
@@ -108,7 +108,7 @@ Number of elements in the set.
108
108
  add(key): this;
109
109
  ```
110
110
 
111
- Defined in: [data-structures/binary-tree/tree-set.ts:398](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L398)
111
+ Defined in: [data-structures/binary-tree/tree-set.ts:508](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L508)
112
112
 
113
113
  Add a key to the set (no-op if already present).
114
114
 
@@ -145,13 +145,54 @@ Expected time O(log n)
145
145
 
146
146
  ***
147
147
 
148
+ ### addMany()
149
+
150
+ ```ts
151
+ addMany(keys): boolean[];
152
+ ```
153
+
154
+ Defined in: [data-structures/binary-tree/tree-set.ts:542](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L542)
155
+
156
+ Add multiple keys at once.
157
+
158
+ #### Parameters
159
+
160
+ ##### keys
161
+
162
+ `Iterable`\<`K`\>
163
+
164
+ Iterable of keys to add.
165
+
166
+ #### Returns
167
+
168
+ `boolean`[]
169
+
170
+ Array of booleans indicating whether each key was newly added.
171
+
172
+ *
173
+
174
+ #### Remarks
175
+
176
+ Expected time O(m log n), where m is the number of keys.
177
+
178
+ #### Example
179
+
180
+ ```ts
181
+ // Add multiple keys
182
+ const ts = new TreeSet<number>();
183
+ ts.addMany([5, 3, 7, 1, 9]);
184
+ console.log(ts.size); // 5;
185
+ ```
186
+
187
+ ***
188
+
148
189
  ### ceiling()
149
190
 
150
191
  ```ts
151
192
  ceiling(key): K | undefined;
152
193
  ```
153
194
 
154
- Defined in: [data-structures/binary-tree/tree-set.ts:2832](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2832)
195
+ Defined in: [data-structures/binary-tree/tree-set.ts:3908](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3908)
155
196
 
156
197
  Smallest key that is >= the given key.
157
198
 
@@ -195,7 +236,7 @@ Smallest key that is >= the given key.
195
236
  clear(): void;
196
237
  ```
197
238
 
198
- Defined in: [data-structures/binary-tree/tree-set.ts:837](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L837)
239
+ Defined in: [data-structures/binary-tree/tree-set.ts:1165](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L1165)
199
240
 
200
241
  Remove all keys.
201
242
 
@@ -222,7 +263,7 @@ Remove all keys.
222
263
  clone(): TreeSet<K>;
223
264
  ```
224
265
 
225
- Defined in: [data-structures/binary-tree/tree-set.ts:3483](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L3483)
266
+ Defined in: [data-structures/binary-tree/tree-set.ts:4858](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4858)
226
267
 
227
268
  Creates a shallow clone of this set.
228
269
 
@@ -254,7 +295,7 @@ Time O(n log n), Space O(n)
254
295
  delete(key): boolean;
255
296
  ```
256
297
 
257
- Defined in: [data-structures/binary-tree/tree-set.ts:700](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L700)
298
+ Defined in: [data-structures/binary-tree/tree-set.ts:956](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L956)
258
299
 
259
300
  Delete a key.
260
301
 
@@ -289,13 +330,43 @@ Expected time O(log n)
289
330
 
290
331
  ***
291
332
 
333
+ ### deleteWhere()
334
+
335
+ ```ts
336
+ deleteWhere(predicate): boolean;
337
+ ```
338
+
339
+ Defined in: [data-structures/binary-tree/tree-set.ts:967](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L967)
340
+
341
+ Delete all keys matching a predicate.
342
+
343
+ #### Parameters
344
+
345
+ ##### predicate
346
+
347
+ (`key`, `index`, `set`) => `boolean`
348
+
349
+ Function (key, index, set) → boolean; return true to delete.
350
+
351
+ #### Returns
352
+
353
+ `boolean`
354
+
355
+ True if at least one key was deleted.
356
+
357
+ #### Remarks
358
+
359
+ Time O(N), Space O(N)
360
+
361
+ ***
362
+
292
363
  ### entries()
293
364
 
294
365
  ```ts
295
366
  entries(): IterableIterator<[K, K]>;
296
367
  ```
297
368
 
298
- Defined in: [data-structures/binary-tree/tree-set.ts:1243](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1243)
369
+ Defined in: [data-structures/binary-tree/tree-set.ts:1736](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L1736)
299
370
 
300
371
  Iterate over `[value, value]` pairs (native Set convention).
301
372
 
@@ -323,7 +394,7 @@ Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during
323
394
  every(callbackfn, thisArg?): boolean;
324
395
  ```
325
396
 
326
- Defined in: [data-structures/binary-tree/tree-set.ts:1951](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1951)
397
+ Defined in: [data-structures/binary-tree/tree-set.ts:2719](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L2719)
327
398
 
328
399
  Test whether all values satisfy a predicate.
329
400
 
@@ -363,7 +434,7 @@ Time O(n), Space O(1)
363
434
  filter(callbackfn, thisArg?): TreeSet<K>;
364
435
  ```
365
436
 
366
- Defined in: [data-structures/binary-tree/tree-set.ts:1671](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1671)
437
+ Defined in: [data-structures/binary-tree/tree-set.ts:2329](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L2329)
367
438
 
368
439
  Create a new TreeSet containing only values that satisfy the predicate.
369
440
 
@@ -404,7 +475,7 @@ Time O(n log n) expected, Space O(n)
404
475
  find(callbackfn, thisArg?): K | undefined;
405
476
  ```
406
477
 
407
- Defined in: [data-structures/binary-tree/tree-set.ts:2232](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2232)
478
+ Defined in: [data-structures/binary-tree/tree-set.ts:3110](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3110)
408
479
 
409
480
  Find the first value that satisfies a predicate.
410
481
 
@@ -445,7 +516,7 @@ Time O(n), Space O(1)
445
516
  first(): K | undefined;
446
517
  ```
447
518
 
448
- Defined in: [data-structures/binary-tree/tree-set.ts:2574](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2574)
519
+ Defined in: [data-structures/binary-tree/tree-set.ts:3573](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3573)
449
520
 
450
521
  Smallest key in the set.
451
522
 
@@ -494,7 +565,7 @@ Smallest key in the set.
494
565
  floor(key): K | undefined;
495
566
  ```
496
567
 
497
- Defined in: [data-structures/binary-tree/tree-set.ts:2954](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2954)
568
+ Defined in: [data-structures/binary-tree/tree-set.ts:4074](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4074)
498
569
 
499
570
  Largest key that is <= the given key.
500
571
 
@@ -530,7 +601,7 @@ Largest key that is <= the given key.
530
601
  forEach(cb, thisArg?): void;
531
602
  ```
532
603
 
533
- Defined in: [data-structures/binary-tree/tree-set.ts:1385](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1385)
604
+ Defined in: [data-structures/binary-tree/tree-set.ts:1933](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L1933)
534
605
 
535
606
  Visit each value in ascending order.
536
607
 
@@ -546,7 +617,7 @@ Callback follows native Set convention: `(value, value2, set)`.
546
617
 
547
618
  ##### thisArg?
548
619
 
549
- `any`
620
+ `unknown`
550
621
 
551
622
  #### Returns
552
623
 
@@ -564,13 +635,92 @@ Callback follows native Set convention: `(value, value2, set)`.
564
635
 
565
636
  ***
566
637
 
638
+ ### getByRank()
639
+
640
+ ```ts
641
+ getByRank(k): K | undefined;
642
+ ```
643
+
644
+ Defined in: [data-structures/binary-tree/tree-set.ts:4616](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4616)
645
+
646
+ Returns the element at the k-th position in tree order (0-indexed).
647
+
648
+ #### Parameters
649
+
650
+ ##### k
651
+
652
+ `number`
653
+
654
+ #### Returns
655
+
656
+ `K` \| `undefined`
657
+
658
+ #### Remarks
659
+
660
+ Time O(log n). Requires `enableOrderStatistic: true`.
661
+
662
+ *
663
+
664
+ #### Example
665
+
666
+ ```ts
667
+ // Find k-th element in a TreeSet
668
+ const set = new TreeSet<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
669
+ console.log(set.getByRank(0)); // 10;
670
+ console.log(set.getByRank(2)); // 30;
671
+ console.log(set.getRank(30)); // 2;
672
+ ```
673
+
674
+ ***
675
+
676
+ ### getRank()
677
+
678
+ ```ts
679
+ getRank(key): number;
680
+ ```
681
+
682
+ Defined in: [data-structures/binary-tree/tree-set.ts:4634](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4634)
683
+
684
+ Returns the 0-based rank of a key (number of elements that precede it in tree order).
685
+
686
+ #### Parameters
687
+
688
+ ##### key
689
+
690
+ `K`
691
+
692
+ #### Returns
693
+
694
+ `number`
695
+
696
+ #### Remarks
697
+
698
+ Time O(log n). Requires `enableOrderStatistic: true`.
699
+ *
700
+
701
+ #### Example
702
+
703
+ ```ts
704
+ // Get the rank of a key in sorted order
705
+ const tree = new TreeSet<number>(
706
+ [10, 20, 30, 40, 50],
707
+ { enableOrderStatistic: true }
708
+ );
709
+ console.log(tree.getRank(10)); // 0; // smallest → rank 0
710
+ console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
711
+ console.log(tree.getRank(50)); // 4; // largest → rank 4
712
+ console.log(tree.getRank(25)); // 2;
713
+ ```
714
+
715
+ ***
716
+
567
717
  ### has()
568
718
 
569
719
  ```ts
570
720
  has(key): boolean;
571
721
  ```
572
722
 
573
- Defined in: [data-structures/binary-tree/tree-set.ts:549](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L549)
723
+ Defined in: [data-structures/binary-tree/tree-set.ts:750](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L750)
574
724
 
575
725
  Test whether a key exists.
576
726
 
@@ -608,7 +758,7 @@ Expected time O(log n)
608
758
  higher(key): K | undefined;
609
759
  ```
610
760
 
611
- Defined in: [data-structures/binary-tree/tree-set.ts:3074](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L3074)
761
+ Defined in: [data-structures/binary-tree/tree-set.ts:4238](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4238)
612
762
 
613
763
  Smallest key that is > the given key.
614
764
 
@@ -642,7 +792,7 @@ Smallest key that is > the given key.
642
792
  isEmpty(): boolean;
643
793
  ```
644
794
 
645
- Defined in: [data-structures/binary-tree/tree-set.ts:234](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L234)
795
+ Defined in: [data-structures/binary-tree/tree-set.ts:289](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L289)
646
796
 
647
797
  Whether the set is empty.
648
798
 
@@ -667,7 +817,7 @@ Whether the set is empty.
667
817
  keys(): IterableIterator<K>;
668
818
  ```
669
819
 
670
- Defined in: [data-structures/binary-tree/tree-set.ts:971](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L971)
820
+ Defined in: [data-structures/binary-tree/tree-set.ts:1354](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L1354)
671
821
 
672
822
  Iterate over keys in ascending order.
673
823
 
@@ -693,7 +843,7 @@ Iterate over keys in ascending order.
693
843
  last(): K | undefined;
694
844
  ```
695
845
 
696
- Defined in: [data-structures/binary-tree/tree-set.ts:2614](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2614)
846
+ Defined in: [data-structures/binary-tree/tree-set.ts:3624](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3624)
697
847
 
698
848
  Largest key in the set.
699
849
 
@@ -720,7 +870,7 @@ Largest key in the set.
720
870
  lower(key): K | undefined;
721
871
  ```
722
872
 
723
- Defined in: [data-structures/binary-tree/tree-set.ts:3194](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L3194)
873
+ Defined in: [data-structures/binary-tree/tree-set.ts:4402](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4402)
724
874
 
725
875
  Largest key that is < the given key.
726
876
 
@@ -757,7 +907,7 @@ map<MK>(
757
907
  thisArg?): TreeSet<MK>;
758
908
  ```
759
909
 
760
- Defined in: [data-structures/binary-tree/tree-set.ts:1523](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1523)
910
+ Defined in: [data-structures/binary-tree/tree-set.ts:2126](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L2126)
761
911
 
762
912
  Create a new TreeSet by mapping each value to a new key.
763
913
 
@@ -810,7 +960,7 @@ Time O(n log n) expected, Space O(n)
810
960
  pollFirst(): K | undefined;
811
961
  ```
812
962
 
813
- Defined in: [data-structures/binary-tree/tree-set.ts:2656](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2656)
963
+ Defined in: [data-structures/binary-tree/tree-set.ts:3677](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3677)
814
964
 
815
965
  Remove and return the smallest key.
816
966
 
@@ -839,7 +989,7 @@ Remove and return the smallest key.
839
989
  pollLast(): K | undefined;
840
990
  ```
841
991
 
842
- Defined in: [data-structures/binary-tree/tree-set.ts:2700](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2700)
992
+ Defined in: [data-structures/binary-tree/tree-set.ts:3732](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3732)
843
993
 
844
994
  Remove and return the largest key.
845
995
 
@@ -867,7 +1017,7 @@ Remove and return the largest key.
867
1017
  print(): void;
868
1018
  ```
869
1019
 
870
- Defined in: [data-structures/binary-tree/tree-set.ts:2509](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2509)
1020
+ Defined in: [data-structures/binary-tree/tree-set.ts:3497](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3497)
871
1021
 
872
1022
  Print a human-friendly representation.
873
1023
 
@@ -891,13 +1041,63 @@ Time O(n), Space O(n)
891
1041
 
892
1042
  ***
893
1043
 
1044
+ ### rangeByRank()
1045
+
1046
+ ```ts
1047
+ rangeByRank(start, end): K[];
1048
+ ```
1049
+
1050
+ Defined in: [data-structures/binary-tree/tree-set.ts:4665](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4665)
1051
+
1052
+ Returns elements by rank range (0-indexed, inclusive on both ends).
1053
+
1054
+ #### Parameters
1055
+
1056
+ ##### start
1057
+
1058
+ `number`
1059
+
1060
+ ##### end
1061
+
1062
+ `number`
1063
+
1064
+ #### Returns
1065
+
1066
+ `K`[]
1067
+
1068
+ #### Remarks
1069
+
1070
+ Time O(log n + k). Requires `enableOrderStatistic: true`.
1071
+
1072
+ *
1073
+
1074
+ #### Example
1075
+
1076
+ ```ts
1077
+ // Pagination by position in tree order
1078
+ const tree = new TreeSet<number>(
1079
+ [10, 20, 30, 40, 50, 60, 70, 80, 90],
1080
+ { enableOrderStatistic: true }
1081
+ );
1082
+ const pageSize = 3;
1083
+
1084
+ // Page 1
1085
+ console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
1086
+ // Page 2
1087
+ console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
1088
+ // Page 3
1089
+ console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
1090
+ ```
1091
+
1092
+ ***
1093
+
894
1094
  ### rangeSearch()
895
1095
 
896
1096
  ```ts
897
1097
  rangeSearch(range, options?): K[];
898
1098
  ```
899
1099
 
900
- Defined in: [data-structures/binary-tree/tree-set.ts:3328](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L3328)
1100
+ Defined in: [data-structures/binary-tree/tree-set.ts:4580](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L4580)
901
1101
 
902
1102
  Return all keys in a given range.
903
1103
 
@@ -950,7 +1150,7 @@ Inclusive/exclusive bounds (defaults to inclusive).
950
1150
  reduce<A>(callbackfn, initialValue): A;
951
1151
  ```
952
1152
 
953
- Defined in: [data-structures/binary-tree/tree-set.ts:1815](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1815)
1153
+ Defined in: [data-structures/binary-tree/tree-set.ts:2528](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L2528)
954
1154
 
955
1155
  Reduce values into a single accumulator.
956
1156
 
@@ -997,7 +1197,7 @@ Time O(n), Space O(1)
997
1197
  some(callbackfn, thisArg?): boolean;
998
1198
  ```
999
1199
 
1000
- Defined in: [data-structures/binary-tree/tree-set.ts:2091](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2091)
1200
+ Defined in: [data-structures/binary-tree/tree-set.ts:2914](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L2914)
1001
1201
 
1002
1202
  Test whether any value satisfies a predicate.
1003
1203
 
@@ -1037,7 +1237,7 @@ Time O(n), Space O(1)
1037
1237
  toArray(): K[];
1038
1238
  ```
1039
1239
 
1040
- Defined in: [data-structures/binary-tree/tree-set.ts:2374](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L2374)
1240
+ Defined in: [data-structures/binary-tree/tree-set.ts:3307](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L3307)
1041
1241
 
1042
1242
  Materialize the set into an array of keys.
1043
1243
 
@@ -1067,7 +1267,7 @@ Time O(n), Space O(n)
1067
1267
  values(): IterableIterator<K>;
1068
1268
  ```
1069
1269
 
1070
- Defined in: [data-structures/binary-tree/tree-set.ts:1107](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L1107)
1270
+ Defined in: [data-structures/binary-tree/tree-set.ts:1545](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L1545)
1071
1271
 
1072
1272
  Iterate over values in ascending order.
1073
1273
 
@@ -1095,7 +1295,7 @@ Note: for Set-like containers, `values()` is the same as `keys()`.
1095
1295
  static createDefaultComparator<K>(): Comparator<K>;
1096
1296
  ```
1097
1297
 
1098
- Defined in: [data-structures/binary-tree/tree-set.ts:71](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-set.ts#L71)
1298
+ Defined in: [data-structures/binary-tree/tree-set.ts:71](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-set.ts#L71)
1099
1299
 
1100
1300
  Create the strict default comparator.
1101
1301