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.
- package/CHANGELOG.md +5 -1
- package/MIGRATION.md +169 -0
- package/README.md +135 -23
- package/README_CN.md +551 -143
- package/SPECIFICATION.md +20 -14
- package/SPECIFICATION.zh-CN.md +20 -14
- package/dist/cjs/binary-tree.cjs +6460 -1591
- package/dist/cjs/graph.cjs +440 -20
- package/dist/cjs/hash.cjs +125 -22
- package/dist/cjs/heap.cjs +196 -47
- package/dist/cjs/index.cjs +8486 -2429
- package/dist/cjs/linked-list.cjs +456 -31
- package/dist/cjs/matrix.cjs +79 -9
- package/dist/cjs/priority-queue.cjs +193 -44
- package/dist/cjs/queue.cjs +391 -2
- package/dist/cjs/stack.cjs +92 -6
- package/dist/cjs/trie.cjs +122 -28
- package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
- package/dist/cjs-legacy/graph.cjs +440 -20
- package/dist/cjs-legacy/hash.cjs +125 -22
- package/dist/cjs-legacy/heap.cjs +196 -47
- package/dist/cjs-legacy/index.cjs +8654 -2594
- package/dist/cjs-legacy/linked-list.cjs +456 -31
- package/dist/cjs-legacy/matrix.cjs +79 -9
- package/dist/cjs-legacy/priority-queue.cjs +193 -44
- package/dist/cjs-legacy/queue.cjs +391 -2
- package/dist/cjs-legacy/stack.cjs +92 -6
- package/dist/cjs-legacy/trie.cjs +122 -28
- package/dist/esm/binary-tree.mjs +6460 -1591
- package/dist/esm/graph.mjs +440 -20
- package/dist/esm/hash.mjs +125 -22
- package/dist/esm/heap.mjs +196 -47
- package/dist/esm/index.mjs +8486 -2430
- package/dist/esm/linked-list.mjs +456 -31
- package/dist/esm/matrix.mjs +79 -9
- package/dist/esm/priority-queue.mjs +193 -44
- package/dist/esm/queue.mjs +391 -2
- package/dist/esm/stack.mjs +92 -6
- package/dist/esm/trie.mjs +122 -28
- package/dist/esm-legacy/binary-tree.mjs +6484 -1612
- package/dist/esm-legacy/graph.mjs +440 -20
- package/dist/esm-legacy/hash.mjs +125 -22
- package/dist/esm-legacy/heap.mjs +196 -47
- package/dist/esm-legacy/index.mjs +8654 -2595
- package/dist/esm-legacy/linked-list.mjs +456 -31
- package/dist/esm-legacy/matrix.mjs +79 -9
- package/dist/esm-legacy/priority-queue.mjs +193 -44
- package/dist/esm-legacy/queue.mjs +391 -2
- package/dist/esm-legacy/stack.mjs +92 -6
- package/dist/esm-legacy/trie.mjs +122 -28
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
- package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
- package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
- package/dist/types/data-structures/heap/heap.d.ts +154 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
- package/dist/types/data-structures/queue/deque.d.ts +142 -0
- package/dist/types/data-structures/queue/queue.d.ts +109 -0
- package/dist/types/data-structures/stack/stack.d.ts +82 -2
- package/dist/types/data-structures/trie/trie.d.ts +96 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- 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/umd/data-structure-typed.js +8623 -2564
- package/dist/umd/data-structure-typed.min.js +5 -5
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
- package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
- package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
- package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
- package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
- package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
- package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
- package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
- package/docs-site-docusaurus/docs/guide/faq.md +233 -0
- package/docs-site-docusaurus/docs/guide/guides.md +43 -58
- package/docs-site-docusaurus/docs/guide/installation.md +2 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
- package/docs-site-docusaurus/docs/guide/overview.md +132 -11
- package/docs-site-docusaurus/docs/guide/performance.md +2 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +31 -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 +1 -1
- package/docs-site-docusaurus/src/pages/index.tsx +55 -2
- package/docs-site-docusaurus/static/llms.txt +37 -0
- package/docs-site-docusaurus/typedoc.json +1 -0
- package/llms.txt +37 -0
- package/package.json +65 -56
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/binary-tree/avl-tree.ts +99 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
- package/src/data-structures/binary-tree/binary-tree.ts +239 -78
- package/src/data-structures/binary-tree/bst.ts +542 -13
- package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
- package/src/data-structures/binary-tree/segment-tree.ts +42 -0
- package/src/data-structures/binary-tree/tree-map.ts +1223 -261
- package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
- package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
- package/src/data-structures/binary-tree/tree-set.ts +1018 -99
- package/src/data-structures/graph/abstract-graph.ts +2 -2
- package/src/data-structures/graph/directed-graph.ts +71 -1
- package/src/data-structures/graph/undirected-graph.ts +64 -1
- package/src/data-structures/hash/hash-map.ts +102 -16
- package/src/data-structures/heap/heap.ts +153 -23
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
- package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
- package/src/data-structures/matrix/matrix.ts +65 -9
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +130 -0
- package/src/data-structures/queue/queue.ts +109 -0
- package/src/data-structures/stack/stack.ts +75 -5
- package/src/data-structures/trie/trie.ts +86 -2
- package/src/interfaces/binary-tree.ts +1 -9
- 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/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: TreeMultiMap\<K, V, R\>
|
|
8
8
|
|
|
9
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:28](https://github.com/zrwusa/data-structure-typed/blob/
|
|
9
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:28](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L28)
|
|
10
10
|
|
|
11
11
|
TreeMultiMap (ordered MultiMap) — key → bucket (Array of values).
|
|
12
12
|
|
|
@@ -51,7 +51,7 @@ Semantics (RFC):
|
|
|
51
51
|
new TreeMultiMap<K, V, R>(keysNodesEntriesOrRaws?, options?): TreeMultiMap<K, V, R>;
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:45](https://github.com/zrwusa/data-structure-typed/blob/
|
|
54
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:45](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L45)
|
|
55
55
|
|
|
56
56
|
Creates a new TreeMultiMap.
|
|
57
57
|
|
|
@@ -103,7 +103,7 @@ const mmap = new TreeMultiMap(players, { toEntryFn: p => [p.score, p.items] });
|
|
|
103
103
|
get comparator(): Comparator<K>;
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
106
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:5021](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L5021)
|
|
107
107
|
|
|
108
108
|
Expose comparator for advanced usage/testing (read-only).
|
|
109
109
|
|
|
@@ -125,7 +125,7 @@ Time O(1), Space O(1)
|
|
|
125
125
|
get size(): number;
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:109](https://github.com/zrwusa/data-structure-typed/blob/
|
|
128
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:109](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L109)
|
|
129
129
|
|
|
130
130
|
Number of distinct keys.
|
|
131
131
|
|
|
@@ -147,7 +147,7 @@ Time O(1), Space O(1)
|
|
|
147
147
|
get totalSize(): number;
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
150
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:580](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L580)
|
|
151
151
|
|
|
152
152
|
Total number of values across all buckets (Σ bucket.length).
|
|
153
153
|
|
|
@@ -180,7 +180,7 @@ Time O(n), Space O(1)
|
|
|
180
180
|
iterator: Iterator<[K, V[]]>;
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
183
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1897](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1897)
|
|
184
184
|
|
|
185
185
|
Iterates over all entries as [key, bucket] pairs.
|
|
186
186
|
|
|
@@ -206,7 +206,7 @@ Iterable.[iterator]
|
|
|
206
206
|
add(key, value): boolean;
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
209
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1239](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1239)
|
|
210
210
|
|
|
211
211
|
Append a single value.
|
|
212
212
|
|
|
@@ -249,7 +249,7 @@ Time O(log n), Space O(1)
|
|
|
249
249
|
ceiling(key): [K, V[]] | undefined;
|
|
250
250
|
```
|
|
251
251
|
|
|
252
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
252
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2896](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2896)
|
|
253
253
|
|
|
254
254
|
Returns the entry with the smallest key >= given key.
|
|
255
255
|
|
|
@@ -288,7 +288,7 @@ Time O(log n), Space O(1)
|
|
|
288
288
|
clear(): void;
|
|
289
289
|
```
|
|
290
290
|
|
|
291
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
291
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:490](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L490)
|
|
292
292
|
|
|
293
293
|
Removes all entries from the map.
|
|
294
294
|
|
|
@@ -320,20 +320,16 @@ Time O(1), Space O(1)
|
|
|
320
320
|
clone(): TreeMultiMap<K, V, R>;
|
|
321
321
|
```
|
|
322
322
|
|
|
323
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
323
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:5013](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L5013)
|
|
324
324
|
|
|
325
|
-
|
|
325
|
+
Deep copy
|
|
326
|
+
|
|
327
|
+
*
|
|
326
328
|
|
|
327
329
|
#### Returns
|
|
328
330
|
|
|
329
331
|
`TreeMultiMap`\<`K`, `V`, `R`\>
|
|
330
332
|
|
|
331
|
-
#### Remarks
|
|
332
|
-
|
|
333
|
-
Time O(n log n), Space O(n)
|
|
334
|
-
|
|
335
|
-
*
|
|
336
|
-
|
|
337
333
|
#### Example
|
|
338
334
|
|
|
339
335
|
```ts
|
|
@@ -353,7 +349,7 @@ Time O(n log n), Space O(n)
|
|
|
353
349
|
count(key): number;
|
|
354
350
|
```
|
|
355
351
|
|
|
356
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
352
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:534](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L534)
|
|
357
353
|
|
|
358
354
|
Bucket length for a key (missing => 0).
|
|
359
355
|
|
|
@@ -391,7 +387,7 @@ Time O(log n), Space O(1)
|
|
|
391
387
|
delete(key): boolean;
|
|
392
388
|
```
|
|
393
389
|
|
|
394
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
390
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1733](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1733)
|
|
395
391
|
|
|
396
392
|
Deletes a key and its entire bucket.
|
|
397
393
|
|
|
@@ -433,7 +429,7 @@ deleteValue(
|
|
|
433
429
|
eq?): boolean;
|
|
434
430
|
```
|
|
435
431
|
|
|
436
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
432
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1825](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1825)
|
|
437
433
|
|
|
438
434
|
Delete a single occurrence of a value from a key's bucket.
|
|
439
435
|
|
|
@@ -483,7 +479,7 @@ deleteValues(
|
|
|
483
479
|
eq?): number;
|
|
484
480
|
```
|
|
485
481
|
|
|
486
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
482
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1877](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1877)
|
|
487
483
|
|
|
488
484
|
Delete all occurrences of a value from a key's bucket.
|
|
489
485
|
|
|
@@ -531,7 +527,7 @@ Time O(log n + m), Space O(1) where m is bucket size
|
|
|
531
527
|
entriesOf(key): IterableIterator<[K, V]>;
|
|
532
528
|
```
|
|
533
529
|
|
|
534
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
530
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2330](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2330)
|
|
535
531
|
|
|
536
532
|
Iterates over all entries for a specific key.
|
|
537
533
|
|
|
@@ -569,7 +565,7 @@ Time O(log n + m), Space O(1) where m is bucket size
|
|
|
569
565
|
filter(predicate): TreeMultiMap<K, V, R>;
|
|
570
566
|
```
|
|
571
567
|
|
|
572
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
568
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4003](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4003)
|
|
573
569
|
|
|
574
570
|
Creates a new map with entries that pass the predicate.
|
|
575
571
|
|
|
@@ -609,7 +605,7 @@ Time O(n), Space O(n)
|
|
|
609
605
|
first(): [K, V[]] | undefined;
|
|
610
606
|
```
|
|
611
607
|
|
|
612
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
608
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2511](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2511)
|
|
613
609
|
|
|
614
610
|
Returns the entry with the smallest key.
|
|
615
611
|
|
|
@@ -641,7 +637,7 @@ Time O(log n), Space O(1)
|
|
|
641
637
|
flatEntries(): IterableIterator<[K, V]>;
|
|
642
638
|
```
|
|
643
639
|
|
|
644
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
640
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2423](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2423)
|
|
645
641
|
|
|
646
642
|
Iterates over all [key, value] pairs (flattened from buckets).
|
|
647
643
|
|
|
@@ -674,7 +670,7 @@ Time O(T), Space O(1) where T is totalSize
|
|
|
674
670
|
floor(key): [K, V[]] | undefined;
|
|
675
671
|
```
|
|
676
672
|
|
|
677
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
673
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:3096](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L3096)
|
|
678
674
|
|
|
679
675
|
Returns the entry with the largest key <= given key.
|
|
680
676
|
|
|
@@ -713,7 +709,7 @@ Time O(log n), Space O(1)
|
|
|
713
709
|
forEach(callback): void;
|
|
714
710
|
```
|
|
715
711
|
|
|
716
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
712
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:3807](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L3807)
|
|
717
713
|
|
|
718
714
|
Executes a callback for each entry.
|
|
719
715
|
|
|
@@ -753,7 +749,7 @@ Time O(n), Space O(1)
|
|
|
753
749
|
get(key): V[] | undefined;
|
|
754
750
|
```
|
|
755
751
|
|
|
756
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
752
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1051](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1051)
|
|
757
753
|
|
|
758
754
|
Live bucket reference (do not auto-delete key if bucket becomes empty via mutation).
|
|
759
755
|
|
|
@@ -785,13 +781,87 @@ Time O(log n), Space O(1)
|
|
|
785
781
|
|
|
786
782
|
***
|
|
787
783
|
|
|
784
|
+
### getByRank()
|
|
785
|
+
|
|
786
|
+
```ts
|
|
787
|
+
getByRank(k): [K, V[]] | undefined;
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4923](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4923)
|
|
791
|
+
|
|
792
|
+
Creates a shallow clone of this map.
|
|
793
|
+
|
|
794
|
+
#### Parameters
|
|
795
|
+
|
|
796
|
+
##### k
|
|
797
|
+
|
|
798
|
+
`number`
|
|
799
|
+
|
|
800
|
+
#### Returns
|
|
801
|
+
|
|
802
|
+
\[`K`, `V`[]\] \| `undefined`
|
|
803
|
+
|
|
804
|
+
#### Remarks
|
|
805
|
+
|
|
806
|
+
Time O(n log n), Space O(n)
|
|
807
|
+
|
|
808
|
+
*
|
|
809
|
+
|
|
810
|
+
#### Example
|
|
811
|
+
|
|
812
|
+
```ts
|
|
813
|
+
// Order-statistic on BST
|
|
814
|
+
const tree = new TreeMultiMap<number>([30, 10, 50, 20, 40], { enableOrderStatistic: true });
|
|
815
|
+
console.log(tree.getByRank(0)); // 10;
|
|
816
|
+
console.log(tree.getByRank(4)); // 50;
|
|
817
|
+
console.log(tree.getRank(30)); // 2;
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
***
|
|
821
|
+
|
|
822
|
+
### getRank()
|
|
823
|
+
|
|
824
|
+
```ts
|
|
825
|
+
getRank(key): number;
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4942](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4942)
|
|
829
|
+
|
|
830
|
+
Get the rank of a key in sorted order
|
|
831
|
+
|
|
832
|
+
#### Parameters
|
|
833
|
+
|
|
834
|
+
##### key
|
|
835
|
+
|
|
836
|
+
`K`
|
|
837
|
+
|
|
838
|
+
#### Returns
|
|
839
|
+
|
|
840
|
+
`number`
|
|
841
|
+
|
|
842
|
+
#### Example
|
|
843
|
+
|
|
844
|
+
```ts
|
|
845
|
+
// Get the rank of a key in sorted order
|
|
846
|
+
const tree = new TreeMultiMap<number>(
|
|
847
|
+
[10, 20, 30, 40, 50],
|
|
848
|
+
{ enableOrderStatistic: true }
|
|
849
|
+
);
|
|
850
|
+
console.log(tree.getRank(10)); // 0; // smallest → rank 0
|
|
851
|
+
console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
|
|
852
|
+
console.log(tree.getRank(50)); // 4; // largest → rank 4
|
|
853
|
+
console.log(tree.getRank(25)); // 2;
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
***
|
|
857
|
+
|
|
788
858
|
### has()
|
|
789
859
|
|
|
790
860
|
```ts
|
|
791
861
|
has(key): boolean;
|
|
792
862
|
```
|
|
793
863
|
|
|
794
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
864
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:816](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L816)
|
|
795
865
|
|
|
796
866
|
Whether the map contains the given key.
|
|
797
867
|
|
|
@@ -832,7 +902,7 @@ hasEntry(
|
|
|
832
902
|
eq?): boolean;
|
|
833
903
|
```
|
|
834
904
|
|
|
835
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
905
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1778](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1778)
|
|
836
906
|
|
|
837
907
|
Check if a specific value exists in a key's bucket.
|
|
838
908
|
|
|
@@ -878,7 +948,7 @@ Time O(log n + m), Space O(1) where m is bucket size
|
|
|
878
948
|
higher(key): [K, V[]] | undefined;
|
|
879
949
|
```
|
|
880
950
|
|
|
881
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
951
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:3256](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L3256)
|
|
882
952
|
|
|
883
953
|
Returns the entry with the smallest key > given key.
|
|
884
954
|
|
|
@@ -916,7 +986,7 @@ Time O(log n), Space O(1)
|
|
|
916
986
|
isEmpty(): boolean;
|
|
917
987
|
```
|
|
918
988
|
|
|
919
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
989
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:298](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L298)
|
|
920
990
|
|
|
921
991
|
Whether the map is empty.
|
|
922
992
|
|
|
@@ -945,7 +1015,7 @@ Time O(1), Space O(1)
|
|
|
945
1015
|
keys(): IterableIterator<K>;
|
|
946
1016
|
```
|
|
947
1017
|
|
|
948
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1018
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2092](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2092)
|
|
949
1019
|
|
|
950
1020
|
Iterates over all keys.
|
|
951
1021
|
|
|
@@ -977,7 +1047,7 @@ Time O(n), Space O(1)
|
|
|
977
1047
|
last(): [K, V[]] | undefined;
|
|
978
1048
|
```
|
|
979
1049
|
|
|
980
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1050
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2598](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2598)
|
|
981
1051
|
|
|
982
1052
|
Returns the entry with the largest key.
|
|
983
1053
|
|
|
@@ -1009,7 +1079,7 @@ Time O(log n), Space O(1)
|
|
|
1009
1079
|
lower(key): [K, V[]] | undefined;
|
|
1010
1080
|
```
|
|
1011
1081
|
|
|
1012
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1082
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:3416](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L3416)
|
|
1013
1083
|
|
|
1014
1084
|
Returns the entry with the largest key < given key.
|
|
1015
1085
|
|
|
@@ -1047,7 +1117,7 @@ Time O(log n), Space O(1)
|
|
|
1047
1117
|
map<V2>(mapper): TreeMultiMap<K, V2, R>;
|
|
1048
1118
|
```
|
|
1049
1119
|
|
|
1050
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1120
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4199](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4199)
|
|
1051
1121
|
|
|
1052
1122
|
Creates a new map by transforming each entry.
|
|
1053
1123
|
|
|
@@ -1091,7 +1161,7 @@ Time O(n log n), Space O(n)
|
|
|
1091
1161
|
pollFirst(): [K, V[]] | undefined;
|
|
1092
1162
|
```
|
|
1093
1163
|
|
|
1094
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1164
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2648](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2648)
|
|
1095
1165
|
|
|
1096
1166
|
Removes and returns the entry with the smallest key.
|
|
1097
1167
|
|
|
@@ -1125,7 +1195,7 @@ Time O(log n), Space O(1)
|
|
|
1125
1195
|
pollLast(): [K, V[]] | undefined;
|
|
1126
1196
|
```
|
|
1127
1197
|
|
|
1128
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1198
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2697](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2697)
|
|
1129
1199
|
|
|
1130
1200
|
Removes and returns the entry with the largest key.
|
|
1131
1201
|
|
|
@@ -1158,7 +1228,7 @@ Time O(log n), Space O(1)
|
|
|
1158
1228
|
print(): void;
|
|
1159
1229
|
```
|
|
1160
1230
|
|
|
1161
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1231
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:3613](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L3613)
|
|
1162
1232
|
|
|
1163
1233
|
Prints the internal tree structure (for debugging).
|
|
1164
1234
|
|
|
@@ -1183,13 +1253,59 @@ Time O(n), Space O(n)
|
|
|
1183
1253
|
|
|
1184
1254
|
***
|
|
1185
1255
|
|
|
1256
|
+
### rangeByRank()
|
|
1257
|
+
|
|
1258
|
+
```ts
|
|
1259
|
+
rangeByRank(start, end): [K, V[]][];
|
|
1260
|
+
```
|
|
1261
|
+
|
|
1262
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4972](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4972)
|
|
1263
|
+
|
|
1264
|
+
Get elements by rank range
|
|
1265
|
+
|
|
1266
|
+
*
|
|
1267
|
+
|
|
1268
|
+
#### Parameters
|
|
1269
|
+
|
|
1270
|
+
##### start
|
|
1271
|
+
|
|
1272
|
+
`number`
|
|
1273
|
+
|
|
1274
|
+
##### end
|
|
1275
|
+
|
|
1276
|
+
`number`
|
|
1277
|
+
|
|
1278
|
+
#### Returns
|
|
1279
|
+
|
|
1280
|
+
\[`K`, `V`[]\][]
|
|
1281
|
+
|
|
1282
|
+
#### Example
|
|
1283
|
+
|
|
1284
|
+
```ts
|
|
1285
|
+
// Pagination by position in tree order
|
|
1286
|
+
const tree = new TreeMultiMap<number>(
|
|
1287
|
+
[10, 20, 30, 40, 50, 60, 70, 80, 90],
|
|
1288
|
+
{ enableOrderStatistic: true }
|
|
1289
|
+
);
|
|
1290
|
+
const pageSize = 3;
|
|
1291
|
+
|
|
1292
|
+
// Page 1
|
|
1293
|
+
console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
|
|
1294
|
+
// Page 2
|
|
1295
|
+
console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
|
|
1296
|
+
// Page 3
|
|
1297
|
+
console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
|
|
1298
|
+
```
|
|
1299
|
+
|
|
1300
|
+
***
|
|
1301
|
+
|
|
1186
1302
|
### rangeSearch()
|
|
1187
1303
|
|
|
1188
1304
|
```ts
|
|
1189
1305
|
rangeSearch<C>(range, callback?): ReturnType<C>[];
|
|
1190
1306
|
```
|
|
1191
1307
|
|
|
1192
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1308
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4748](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4748)
|
|
1193
1309
|
|
|
1194
1310
|
Searches for entries within a key range.
|
|
1195
1311
|
|
|
@@ -1239,7 +1355,7 @@ Time O(log n + k), Space O(k) where k is result size
|
|
|
1239
1355
|
reduce<U>(callback, initialValue): U;
|
|
1240
1356
|
```
|
|
1241
1357
|
|
|
1242
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1358
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4398](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4398)
|
|
1243
1359
|
|
|
1244
1360
|
Reduces all entries to a single value.
|
|
1245
1361
|
|
|
@@ -1290,7 +1406,7 @@ Time O(n), Space O(1)
|
|
|
1290
1406
|
set(entry, value?): boolean;
|
|
1291
1407
|
```
|
|
1292
1408
|
|
|
1293
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1409
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1477](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1477)
|
|
1294
1410
|
|
|
1295
1411
|
Alias for compatibility with existing TreeMultiMap semantics.
|
|
1296
1412
|
|
|
@@ -1333,7 +1449,7 @@ Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
|
1333
1449
|
set(key, value): boolean;
|
|
1334
1450
|
```
|
|
1335
1451
|
|
|
1336
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1452
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:1478](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L1478)
|
|
1337
1453
|
|
|
1338
1454
|
Alias for compatibility with existing TreeMultiMap semantics.
|
|
1339
1455
|
|
|
@@ -1375,7 +1491,7 @@ Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
|
1375
1491
|
setMany(keysNodesEntriesOrRaws): boolean[];
|
|
1376
1492
|
```
|
|
1377
1493
|
|
|
1378
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1494
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:4585](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L4585)
|
|
1379
1495
|
|
|
1380
1496
|
Sets multiple entries at once.
|
|
1381
1497
|
|
|
@@ -1412,7 +1528,7 @@ Time O(m log n), Space O(m) where m is input size
|
|
|
1412
1528
|
values(): IterableIterator<V[]>;
|
|
1413
1529
|
```
|
|
1414
1530
|
|
|
1415
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1531
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2284](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2284)
|
|
1416
1532
|
|
|
1417
1533
|
Iterates over all buckets.
|
|
1418
1534
|
|
|
@@ -1444,7 +1560,7 @@ Time O(n), Space O(1)
|
|
|
1444
1560
|
valuesOf(key): IterableIterator<V>;
|
|
1445
1561
|
```
|
|
1446
1562
|
|
|
1447
|
-
Defined in: [data-structures/binary-tree/tree-multi-map.ts:
|
|
1563
|
+
Defined in: [data-structures/binary-tree/tree-multi-map.ts:2376](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/binary-tree/tree-multi-map.ts#L2376)
|
|
1448
1564
|
|
|
1449
1565
|
Iterates over all values for a specific key.
|
|
1450
1566
|
|