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: TreeMap\<K, V, R\>
8
8
 
9
- Defined in: [data-structures/binary-tree/tree-map.ts:26](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L26)
9
+ Defined in: [data-structures/binary-tree/tree-map.ts:26](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L26)
10
10
 
11
11
  An ordered Map backed by a red-black tree.
12
12
 
@@ -48,7 +48,7 @@ An ordered Map backed by a red-black tree.
48
48
  new TreeMap<K, V, R>(entries?, options?): TreeMap<K, V, R>;
49
49
  ```
50
50
 
51
- Defined in: [data-structures/binary-tree/tree-map.ts:46](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L46)
51
+ Defined in: [data-structures/binary-tree/tree-map.ts:46](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L46)
52
52
 
53
53
  Create a TreeMap from an iterable of `[key, value]` entries or raw elements.
54
54
 
@@ -97,7 +97,7 @@ const map = new TreeMap<number, User, User>(users, { toEntryFn: u => [u.id, u] }
97
97
  get size(): number;
98
98
  ```
99
99
 
100
- Defined in: [data-structures/binary-tree/tree-map.ts:134](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L134)
100
+ Defined in: [data-structures/binary-tree/tree-map.ts:134](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L134)
101
101
 
102
102
  Number of entries in the map.
103
103
 
@@ -113,7 +113,7 @@ Number of entries in the map.
113
113
  ceiling(key): [K, V | undefined] | undefined;
114
114
  ```
115
115
 
116
- Defined in: [data-structures/binary-tree/tree-map.ts:3061](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3061)
116
+ Defined in: [data-structures/binary-tree/tree-map.ts:4192](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4192)
117
117
 
118
118
  Smallest entry whose key is >= the given key.
119
119
 
@@ -172,7 +172,7 @@ Smallest entry whose key is >= the given key.
172
172
  clear(): void;
173
173
  ```
174
174
 
175
- Defined in: [data-structures/binary-tree/tree-map.ts:1028](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1028)
175
+ Defined in: [data-structures/binary-tree/tree-map.ts:1411](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1411)
176
176
 
177
177
  Remove all entries.
178
178
 
@@ -199,7 +199,7 @@ Remove all entries.
199
199
  clone(): TreeMap<K, V>;
200
200
  ```
201
201
 
202
- Defined in: [data-structures/binary-tree/tree-map.ts:3751](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3751)
202
+ Defined in: [data-structures/binary-tree/tree-map.ts:5189](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L5189)
203
203
 
204
204
  Creates a shallow clone of this map.
205
205
 
@@ -231,7 +231,7 @@ Time O(n log n), Space O(n)
231
231
  delete(key): boolean;
232
232
  ```
233
233
 
234
- Defined in: [data-structures/binary-tree/tree-map.ts:891](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L891)
234
+ Defined in: [data-structures/binary-tree/tree-map.ts:1202](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1202)
235
235
 
236
236
  Delete a key.
237
237
 
@@ -271,13 +271,43 @@ Expected time O(log n)
271
271
 
272
272
  ***
273
273
 
274
+ ### deleteWhere()
275
+
276
+ ```ts
277
+ deleteWhere(predicate): boolean;
278
+ ```
279
+
280
+ Defined in: [data-structures/binary-tree/tree-map.ts:1213](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1213)
281
+
282
+ Delete all entries matching a predicate.
283
+
284
+ #### Parameters
285
+
286
+ ##### predicate
287
+
288
+ (`key`, `value`, `index`, `map`) => `boolean`
289
+
290
+ Function (key, value, index, map) → boolean; return true to delete.
291
+
292
+ #### Returns
293
+
294
+ `boolean`
295
+
296
+ True if at least one entry was deleted.
297
+
298
+ #### Remarks
299
+
300
+ Time O(N), Space O(N)
301
+
302
+ ***
303
+
274
304
  ### entries()
275
305
 
276
306
  ```ts
277
307
  entries(): IterableIterator<[K, V | undefined]>;
278
308
  ```
279
309
 
280
- Defined in: [data-structures/binary-tree/tree-map.ts:1440](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1440)
310
+ Defined in: [data-structures/binary-tree/tree-map.ts:1988](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1988)
281
311
 
282
312
  Iterate over `[key, value]` entries in ascending key order.
283
313
 
@@ -305,7 +335,7 @@ Note: values may be `undefined`.
305
335
  every(callbackfn, thisArg?): boolean;
306
336
  ```
307
337
 
308
- Defined in: [data-structures/binary-tree/tree-map.ts:2147](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2147)
338
+ Defined in: [data-structures/binary-tree/tree-map.ts:2970](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L2970)
309
339
 
310
340
  Test whether all entries satisfy a predicate.
311
341
 
@@ -345,7 +375,7 @@ Time O(n), Space O(1)
345
375
  filter(callbackfn, thisArg?): TreeMap<K, V>;
346
376
  ```
347
377
 
348
- Defined in: [data-structures/binary-tree/tree-map.ts:1868](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1868)
378
+ Defined in: [data-structures/binary-tree/tree-map.ts:2581](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L2581)
349
379
 
350
380
  Create a new TreeMap containing only entries that satisfy the predicate.
351
381
 
@@ -386,7 +416,7 @@ Time O(n log n) expected, Space O(n)
386
416
  find(callbackfn, thisArg?): [K, V | undefined] | undefined;
387
417
  ```
388
418
 
389
- Defined in: [data-structures/binary-tree/tree-map.ts:2428](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2428)
419
+ Defined in: [data-structures/binary-tree/tree-map.ts:3361](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3361)
390
420
 
391
421
  Find the first entry that satisfies a predicate.
392
422
 
@@ -428,7 +458,7 @@ Time O(n), Space O(1)
428
458
  first(): [K, V | undefined] | undefined;
429
459
  ```
430
460
 
431
- Defined in: [data-structures/binary-tree/tree-map.ts:2770](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2770)
461
+ Defined in: [data-structures/binary-tree/tree-map.ts:3824](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3824)
432
462
 
433
463
  Smallest entry by key.
434
464
 
@@ -476,7 +506,7 @@ Smallest entry by key.
476
506
  floor(key): [K, V | undefined] | undefined;
477
507
  ```
478
508
 
479
- Defined in: [data-structures/binary-tree/tree-map.ts:3191](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3191)
509
+ Defined in: [data-structures/binary-tree/tree-map.ts:4366](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4366)
480
510
 
481
511
  Largest entry whose key is <= the given key.
482
512
 
@@ -519,7 +549,7 @@ Largest entry whose key is <= the given key.
519
549
  forEach(cb, thisArg?): void;
520
550
  ```
521
551
 
522
- Defined in: [data-structures/binary-tree/tree-map.ts:1582](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1582)
552
+ Defined in: [data-structures/binary-tree/tree-map.ts:2185](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L2185)
523
553
 
524
554
  Visit each entry in ascending key order.
525
555
 
@@ -535,7 +565,7 @@ Note: callback value may be `undefined`.
535
565
 
536
566
  ##### thisArg?
537
567
 
538
- `any`
568
+ `unknown`
539
569
 
540
570
  #### Returns
541
571
 
@@ -559,7 +589,7 @@ Note: callback value may be `undefined`.
559
589
  get(key): V | undefined;
560
590
  ```
561
591
 
562
- Defined in: [data-structures/binary-tree/tree-map.ts:582](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L582)
592
+ Defined in: [data-structures/binary-tree/tree-map.ts:783](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L783)
563
593
 
564
594
  Get the value under a key.
565
595
 
@@ -596,13 +626,95 @@ Expected time O(log n)
596
626
 
597
627
  ***
598
628
 
629
+ ### getByRank()
630
+
631
+ ```ts
632
+ getByRank(k): [K, V | undefined] | undefined;
633
+ ```
634
+
635
+ Defined in: [data-structures/binary-tree/tree-map.ts:4942](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4942)
636
+
637
+ Returns the entry at the k-th position in tree order (0-indexed).
638
+
639
+ #### Parameters
640
+
641
+ ##### k
642
+
643
+ `number`
644
+
645
+ #### Returns
646
+
647
+ \[`K`, `V` \| `undefined`\] \| `undefined`
648
+
649
+ #### Remarks
650
+
651
+ Time O(log n). Requires `enableOrderStatistic: true`.
652
+
653
+ *
654
+
655
+ #### Example
656
+
657
+ ```ts
658
+ // Find k-th entry in a TreeMap
659
+ const map = new TreeMap<string, number>(
660
+ [['alice', 95], ['bob', 87], ['charlie', 92]],
661
+ { enableOrderStatistic: true }
662
+ );
663
+ console.log(map.getByRank(0)); // 'alice';
664
+ console.log(map.getByRank(1)); // 'bob';
665
+ console.log(map.getByRank(2)); // 'charlie';
666
+ ```
667
+
668
+ ***
669
+
670
+ ### getRank()
671
+
672
+ ```ts
673
+ getRank(key): number;
674
+ ```
675
+
676
+ Defined in: [data-structures/binary-tree/tree-map.ts:4962](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4962)
677
+
678
+ Returns the 0-based rank of a key (number of elements that precede it in tree order).
679
+
680
+ #### Parameters
681
+
682
+ ##### key
683
+
684
+ `K`
685
+
686
+ #### Returns
687
+
688
+ `number`
689
+
690
+ #### Remarks
691
+
692
+ Time O(log n). Requires `enableOrderStatistic: true`.
693
+ *
694
+
695
+ #### Example
696
+
697
+ ```ts
698
+ // Get the rank of a key in sorted order
699
+ const tree = new TreeMap<number>(
700
+ [10, 20, 30, 40, 50],
701
+ { enableOrderStatistic: true }
702
+ );
703
+ console.log(tree.getRank(10)); // 0; // smallest → rank 0
704
+ console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
705
+ console.log(tree.getRank(50)); // 4; // largest → rank 4
706
+ console.log(tree.getRank(25)); // 2;
707
+ ```
708
+
709
+ ***
710
+
599
711
  ### has()
600
712
 
601
713
  ```ts
602
714
  has(key): boolean;
603
715
  ```
604
716
 
605
- Defined in: [data-structures/binary-tree/tree-map.ts:735](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L735)
717
+ Defined in: [data-structures/binary-tree/tree-map.ts:991](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L991)
606
718
 
607
719
  Test whether a key exists.
608
720
 
@@ -644,7 +756,7 @@ Expected time O(log n)
644
756
  higher(key): [K, V | undefined] | undefined;
645
757
  ```
646
758
 
647
- Defined in: [data-structures/binary-tree/tree-map.ts:3321](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3321)
759
+ Defined in: [data-structures/binary-tree/tree-map.ts:4540](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4540)
648
760
 
649
761
  Smallest entry whose key is > the given key.
650
762
 
@@ -687,7 +799,7 @@ Smallest entry whose key is > the given key.
687
799
  isEmpty(): boolean;
688
800
  ```
689
801
 
690
- Defined in: [data-structures/binary-tree/tree-map.ts:267](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L267)
802
+ Defined in: [data-structures/binary-tree/tree-map.ts:322](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L322)
691
803
 
692
804
  Whether the map is empty.
693
805
 
@@ -712,7 +824,7 @@ Whether the map is empty.
712
824
  keys(): IterableIterator<K>;
713
825
  ```
714
826
 
715
- Defined in: [data-structures/binary-tree/tree-map.ts:1162](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1162)
827
+ Defined in: [data-structures/binary-tree/tree-map.ts:1600](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1600)
716
828
 
717
829
  Iterate over keys in ascending order.
718
830
 
@@ -738,7 +850,7 @@ Iterate over keys in ascending order.
738
850
  last(): [K, V | undefined] | undefined;
739
851
  ```
740
852
 
741
- Defined in: [data-structures/binary-tree/tree-map.ts:2816](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2816)
853
+ Defined in: [data-structures/binary-tree/tree-map.ts:3881](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3881)
742
854
 
743
855
  Largest entry by key.
744
856
 
@@ -770,7 +882,7 @@ Largest entry by key.
770
882
  lower(key): [K, V | undefined] | undefined;
771
883
  ```
772
884
 
773
- Defined in: [data-structures/binary-tree/tree-map.ts:3449](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3449)
885
+ Defined in: [data-structures/binary-tree/tree-map.ts:4712](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4712)
774
886
 
775
887
  Largest entry whose key is < the given key.
776
888
 
@@ -814,7 +926,7 @@ map<MK, MV>(
814
926
  thisArg?): TreeMap<MK, MV>;
815
927
  ```
816
928
 
817
- Defined in: [data-structures/binary-tree/tree-map.ts:1720](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1720)
929
+ Defined in: [data-structures/binary-tree/tree-map.ts:2378](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L2378)
818
930
 
819
931
  Create a new TreeMap by mapping each entry to a new `[key, value]` entry.
820
932
 
@@ -871,7 +983,7 @@ Time O(n log n) expected, Space O(n)
871
983
  pollFirst(): [K, V | undefined] | undefined;
872
984
  ```
873
985
 
874
- Defined in: [data-structures/binary-tree/tree-map.ts:2864](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2864)
986
+ Defined in: [data-structures/binary-tree/tree-map.ts:3940](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3940)
875
987
 
876
988
  Remove and return the smallest entry.
877
989
 
@@ -905,7 +1017,7 @@ Remove and return the smallest entry.
905
1017
  pollLast(): [K, V | undefined] | undefined;
906
1018
  ```
907
1019
 
908
- Defined in: [data-structures/binary-tree/tree-map.ts:2914](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2914)
1020
+ Defined in: [data-structures/binary-tree/tree-map.ts:4001](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4001)
909
1021
 
910
1022
  Remove and return the largest entry.
911
1023
 
@@ -939,7 +1051,7 @@ Remove and return the largest entry.
939
1051
  print(): void;
940
1052
  ```
941
1053
 
942
- Defined in: [data-structures/binary-tree/tree-map.ts:2705](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2705)
1054
+ Defined in: [data-structures/binary-tree/tree-map.ts:3748](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3748)
943
1055
 
944
1056
  Print a human-friendly representation.
945
1057
 
@@ -963,13 +1075,63 @@ Time O(n), Space O(n)
963
1075
 
964
1076
  ***
965
1077
 
1078
+ ### rangeByRank()
1079
+
1080
+ ```ts
1081
+ rangeByRank(start, end): [K, V | undefined][];
1082
+ ```
1083
+
1084
+ Defined in: [data-structures/binary-tree/tree-map.ts:4993](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4993)
1085
+
1086
+ Returns keys by rank range (0-indexed, inclusive on both ends).
1087
+
1088
+ #### Parameters
1089
+
1090
+ ##### start
1091
+
1092
+ `number`
1093
+
1094
+ ##### end
1095
+
1096
+ `number`
1097
+
1098
+ #### Returns
1099
+
1100
+ \[`K`, `V` \| `undefined`\][]
1101
+
1102
+ #### Remarks
1103
+
1104
+ Time O(log n + k). Requires `enableOrderStatistic: true`.
1105
+
1106
+ *
1107
+
1108
+ #### Example
1109
+
1110
+ ```ts
1111
+ // Pagination by position in tree order
1112
+ const tree = new TreeMap<number>(
1113
+ [10, 20, 30, 40, 50, 60, 70, 80, 90],
1114
+ { enableOrderStatistic: true }
1115
+ );
1116
+ const pageSize = 3;
1117
+
1118
+ // Page 1
1119
+ console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
1120
+ // Page 2
1121
+ console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
1122
+ // Page 3
1123
+ console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
1124
+ ```
1125
+
1126
+ ***
1127
+
966
1128
  ### rangeSearch()
967
1129
 
968
1130
  ```ts
969
1131
  rangeSearch(range, options?): [K, V | undefined][];
970
1132
  ```
971
1133
 
972
- Defined in: [data-structures/binary-tree/tree-map.ts:3597](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L3597)
1134
+ Defined in: [data-structures/binary-tree/tree-map.ts:4904](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L4904)
973
1135
 
974
1136
  Return all entries in a given key range.
975
1137
 
@@ -1035,7 +1197,7 @@ Inclusive/exclusive bounds (defaults to inclusive).
1035
1197
  reduce<A>(callbackfn, initialValue): A;
1036
1198
  ```
1037
1199
 
1038
- Defined in: [data-structures/binary-tree/tree-map.ts:2011](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2011)
1200
+ Defined in: [data-structures/binary-tree/tree-map.ts:2779](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L2779)
1039
1201
 
1040
1202
  Reduce entries into a single accumulator.
1041
1203
 
@@ -1081,7 +1243,7 @@ Time O(n), Space O(1)
1081
1243
  set(key, value): this;
1082
1244
  ```
1083
1245
 
1084
- Defined in: [data-structures/binary-tree/tree-map.ts:427](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L427)
1246
+ Defined in: [data-structures/binary-tree/tree-map.ts:537](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L537)
1085
1247
 
1086
1248
  Set or overwrite a value for a key.
1087
1249
 
@@ -1131,13 +1293,54 @@ Expected time O(log n)
1131
1293
 
1132
1294
  ***
1133
1295
 
1296
+ ### setMany()
1297
+
1298
+ ```ts
1299
+ setMany(entries): boolean[];
1300
+ ```
1301
+
1302
+ Defined in: [data-structures/binary-tree/tree-map.ts:570](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L570)
1303
+
1304
+ Set multiple key-value pairs at once.
1305
+
1306
+ #### Parameters
1307
+
1308
+ ##### entries
1309
+
1310
+ `Iterable`\<\[`K`, `V` \| `undefined`\]\>
1311
+
1312
+ Iterable of `[key, value]` tuples.
1313
+
1314
+ #### Returns
1315
+
1316
+ `boolean`[]
1317
+
1318
+ Array of booleans indicating whether each entry was successfully set.
1319
+
1320
+ *
1321
+
1322
+ #### Remarks
1323
+
1324
+ Expected time O(m log n), where m is the number of entries.
1325
+
1326
+ #### Example
1327
+
1328
+ ```ts
1329
+ // Set multiple key-value pairs
1330
+ const tm = new TreeMap<number, string>();
1331
+ tm.setMany([[1, 'a'], [2, 'b'], [3, 'c']]);
1332
+ console.log(tm.size); // 3;
1333
+ ```
1334
+
1335
+ ***
1336
+
1134
1337
  ### some()
1135
1338
 
1136
1339
  ```ts
1137
1340
  some(callbackfn, thisArg?): boolean;
1138
1341
  ```
1139
1342
 
1140
- Defined in: [data-structures/binary-tree/tree-map.ts:2287](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2287)
1343
+ Defined in: [data-structures/binary-tree/tree-map.ts:3165](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3165)
1141
1344
 
1142
1345
  Test whether any entry satisfies a predicate.
1143
1346
 
@@ -1177,7 +1380,7 @@ Time O(n), Space O(1)
1177
1380
  toArray(): [K, V | undefined][];
1178
1381
  ```
1179
1382
 
1180
- Defined in: [data-structures/binary-tree/tree-map.ts:2570](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L2570)
1383
+ Defined in: [data-structures/binary-tree/tree-map.ts:3558](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L3558)
1181
1384
 
1182
1385
  Materialize the map into an array of `[key, value]` tuples.
1183
1386
 
@@ -1207,7 +1410,7 @@ Time O(n), Space O(n)
1207
1410
  values(): IterableIterator<V | undefined>;
1208
1411
  ```
1209
1412
 
1210
- Defined in: [data-structures/binary-tree/tree-map.ts:1304](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L1304)
1413
+ Defined in: [data-structures/binary-tree/tree-map.ts:1797](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L1797)
1211
1414
 
1212
1415
  Iterate over values in ascending key order.
1213
1416
 
@@ -1235,7 +1438,7 @@ Note: values may be `undefined` (TreeMap allows storing `undefined`, like native
1235
1438
  static createDefaultComparator<K>(): Comparator<K>;
1236
1439
  ```
1237
1440
 
1238
- Defined in: [data-structures/binary-tree/tree-map.ts:87](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/tree-map.ts#L87)
1441
+ Defined in: [data-structures/binary-tree/tree-map.ts:87](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-map.ts#L87)
1239
1442
 
1240
1443
  Create the strict default comparator.
1241
1444