data-structure-typed 1.50.2 → 1.50.4
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/.github/ISSUE_TEMPLATE/bug_report.md +0 -13
- package/CHANGELOG.md +1 -1
- package/README.md +23 -21
- package/README_zh-CN.md +7 -7
- package/SPECIFICATION.md +56 -0
- package/SPONSOR-zh-CN.md +90 -0
- package/SPONSOR.md +54 -0
- package/benchmark/report.html +13 -13
- package/benchmark/report.json +149 -155
- package/dist/cjs/data-structures/base/iterable-base.d.ts +6 -0
- package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/{tree-multimap.d.ts → avl-tree-multi-map.d.ts} +43 -10
- package/dist/cjs/data-structures/binary-tree/{tree-multimap.js → avl-tree-multi-map.js} +50 -12
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -0
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +29 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +33 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.d.ts +22 -0
- package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +22 -0
- package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +46 -13
- package/dist/cjs/data-structures/binary-tree/bst.js +51 -20
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/index.d.ts +2 -1
- package/dist/cjs/data-structures/binary-tree/index.js +2 -1
- package/dist/cjs/data-structures/binary-tree/index.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +54 -2
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +90 -24
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/segment-tree.d.ts +99 -6
- package/dist/cjs/data-structures/binary-tree/segment-tree.js +127 -10
- package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +200 -0
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +400 -0
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -0
- package/dist/cjs/data-structures/graph/abstract-graph.d.ts +0 -78
- package/dist/cjs/data-structures/graph/abstract-graph.js +0 -189
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.d.ts +59 -0
- package/dist/cjs/data-structures/graph/directed-graph.js +105 -0
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.d.ts +60 -7
- package/dist/cjs/data-structures/graph/undirected-graph.js +126 -18
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +143 -23
- package/dist/cjs/data-structures/hash/hash-map.js +196 -62
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +29 -19
- package/dist/cjs/data-structures/heap/heap.js +29 -20
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +71 -25
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +83 -25
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +26 -3
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +34 -3
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +2 -2
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js +2 -2
- package/dist/cjs/data-structures/matrix/matrix.d.ts +1 -1
- package/dist/cjs/data-structures/matrix/matrix.js +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +10 -0
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +10 -0
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +11 -0
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +11 -0
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +8 -0
- package/dist/cjs/data-structures/priority-queue/priority-queue.js +8 -0
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +95 -21
- package/dist/cjs/data-structures/queue/deque.js +100 -16
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +65 -45
- package/dist/cjs/data-structures/queue/queue.js +65 -45
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.d.ts +36 -22
- package/dist/cjs/data-structures/stack/stack.js +36 -22
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/tree/tree.d.ts +57 -3
- package/dist/cjs/data-structures/tree/tree.js +77 -11
- package/dist/cjs/data-structures/tree/tree.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +100 -36
- package/dist/cjs/data-structures/trie/trie.js +115 -36
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +5 -0
- package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js +3 -0
- package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -0
- package/dist/cjs/types/data-structures/binary-tree/index.d.ts +2 -1
- package/dist/cjs/types/data-structures/binary-tree/index.js +2 -1
- package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +5 -0
- package/dist/cjs/types/data-structures/binary-tree/{tree-multimap.js → tree-multi-map.js} +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.js.map +1 -0
- package/dist/mjs/data-structures/base/iterable-base.d.ts +6 -0
- package/dist/mjs/data-structures/binary-tree/{tree-multimap.d.ts → avl-tree-multi-map.d.ts} +43 -10
- package/dist/mjs/data-structures/binary-tree/{tree-multimap.js → avl-tree-multi-map.js} +46 -9
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +29 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +34 -2
- package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.d.ts +22 -0
- package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js +22 -0
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +1 -1
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +46 -13
- package/dist/mjs/data-structures/binary-tree/bst.js +51 -20
- package/dist/mjs/data-structures/binary-tree/index.d.ts +2 -1
- package/dist/mjs/data-structures/binary-tree/index.js +2 -1
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +54 -2
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +91 -25
- package/dist/mjs/data-structures/binary-tree/segment-tree.d.ts +99 -6
- package/dist/mjs/data-structures/binary-tree/segment-tree.js +127 -10
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +200 -0
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +397 -0
- package/dist/mjs/data-structures/graph/abstract-graph.d.ts +0 -78
- package/dist/mjs/data-structures/graph/abstract-graph.js +0 -188
- package/dist/mjs/data-structures/graph/directed-graph.d.ts +59 -0
- package/dist/mjs/data-structures/graph/directed-graph.js +105 -0
- package/dist/mjs/data-structures/graph/undirected-graph.d.ts +60 -7
- package/dist/mjs/data-structures/graph/undirected-graph.js +127 -19
- package/dist/mjs/data-structures/hash/hash-map.d.ts +143 -23
- package/dist/mjs/data-structures/hash/hash-map.js +204 -70
- package/dist/mjs/data-structures/heap/heap.d.ts +29 -19
- package/dist/mjs/data-structures/heap/heap.js +29 -20
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +71 -25
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +86 -28
- package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +26 -3
- package/dist/mjs/data-structures/linked-list/singly-linked-list.js +36 -5
- package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +2 -2
- package/dist/mjs/data-structures/linked-list/skip-linked-list.js +2 -2
- package/dist/mjs/data-structures/matrix/matrix.d.ts +1 -1
- package/dist/mjs/data-structures/matrix/matrix.js +1 -1
- package/dist/mjs/data-structures/priority-queue/max-priority-queue.d.ts +10 -0
- package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +10 -0
- package/dist/mjs/data-structures/priority-queue/min-priority-queue.d.ts +11 -0
- package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +11 -0
- package/dist/mjs/data-structures/priority-queue/priority-queue.d.ts +8 -0
- package/dist/mjs/data-structures/priority-queue/priority-queue.js +8 -0
- package/dist/mjs/data-structures/queue/deque.d.ts +95 -21
- package/dist/mjs/data-structures/queue/deque.js +105 -21
- package/dist/mjs/data-structures/queue/queue.d.ts +65 -45
- package/dist/mjs/data-structures/queue/queue.js +65 -45
- package/dist/mjs/data-structures/stack/stack.d.ts +36 -22
- package/dist/mjs/data-structures/stack/stack.js +36 -22
- package/dist/mjs/data-structures/tree/tree.d.ts +57 -3
- package/dist/mjs/data-structures/tree/tree.js +80 -14
- package/dist/mjs/data-structures/trie/trie.d.ts +100 -36
- package/dist/mjs/data-structures/trie/trie.js +118 -39
- package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +5 -0
- package/dist/mjs/types/data-structures/binary-tree/index.d.ts +2 -1
- package/dist/mjs/types/data-structures/binary-tree/index.js +2 -1
- package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.d.ts +5 -0
- package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.js +1 -0
- package/dist/umd/data-structure-typed.js +1876 -656
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +59 -58
- package/src/data-structures/base/iterable-base.ts +12 -0
- package/src/data-structures/binary-tree/{tree-multimap.ts → avl-tree-multi-map.ts} +59 -20
- package/src/data-structures/binary-tree/avl-tree.ts +37 -3
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +22 -0
- package/src/data-structures/binary-tree/binary-tree.ts +1 -1
- package/src/data-structures/binary-tree/bst.ts +51 -19
- package/src/data-structures/binary-tree/index.ts +2 -1
- package/src/data-structures/binary-tree/rb-tree.ts +99 -28
- package/src/data-structures/binary-tree/segment-tree.ts +145 -11
- package/src/data-structures/binary-tree/tree-multi-map.ts +463 -0
- package/src/data-structures/graph/abstract-graph.ts +0 -211
- package/src/data-structures/graph/directed-graph.ts +122 -0
- package/src/data-structures/graph/undirected-graph.ts +143 -19
- package/src/data-structures/hash/hash-map.ts +228 -76
- package/src/data-structures/heap/heap.ts +31 -20
- package/src/data-structures/linked-list/doubly-linked-list.ts +96 -29
- package/src/data-structures/linked-list/singly-linked-list.ts +42 -6
- package/src/data-structures/linked-list/skip-linked-list.ts +2 -2
- package/src/data-structures/matrix/matrix.ts +1 -1
- package/src/data-structures/priority-queue/max-priority-queue.ts +10 -0
- package/src/data-structures/priority-queue/min-priority-queue.ts +11 -0
- package/src/data-structures/priority-queue/priority-queue.ts +8 -0
- package/src/data-structures/queue/deque.ts +118 -22
- package/src/data-structures/queue/queue.ts +68 -45
- package/src/data-structures/stack/stack.ts +39 -23
- package/src/data-structures/tree/tree.ts +89 -15
- package/src/data-structures/trie/trie.ts +131 -40
- package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +8 -0
- package/src/types/data-structures/binary-tree/index.ts +2 -1
- package/src/types/data-structures/binary-tree/tree-multi-map.ts +8 -0
- package/test/integration/index.html +2 -2
- package/test/performance/data-structures/graph/directed-graph.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/{tree-multimap.test.ts → avl-tree-multi-map.test.ts} +55 -55
- package/test/unit/data-structures/binary-tree/overall.test.ts +24 -25
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +706 -0
- package/test/unit/data-structures/graph/abstract-graph.test.ts +3 -0
- package/test/unit/data-structures/graph/directed-graph.test.ts +189 -253
- package/test/unit/data-structures/graph/undirected-graph.test.ts +263 -18
- package/test/unit/data-structures/queue/queue.test.ts +2 -0
- package/test/unit/unrestricted-interconversion.test.ts +3 -3
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +0 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multimap.d.ts +0 -5
- package/dist/cjs/types/data-structures/binary-tree/tree-multimap.js.map +0 -1
- package/dist/mjs/types/data-structures/binary-tree/tree-multimap.d.ts +0 -5
- package/src/types/data-structures/binary-tree/tree-multimap.ts +0 -8
- /package/dist/mjs/types/data-structures/binary-tree/{tree-multimap.js → avl-tree-multi-map.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UndirectedEdge, UndirectedGraph, UndirectedVertex } from '../../../../src';
|
|
2
|
-
import
|
|
2
|
+
import saltyVertices from './salty-vertexes.json';
|
|
3
3
|
import saltyEdges from './salty-edges.json';
|
|
4
4
|
|
|
5
5
|
describe('UndirectedGraph Operation Test', () => {
|
|
@@ -17,7 +17,7 @@ describe('UndirectedGraph Operation Test', () => {
|
|
|
17
17
|
expect(graph.getEndsOfEdge(new UndirectedEdge('c', 'd'))).toBe(undefined);
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
it('should add
|
|
20
|
+
it('should add vertices', () => {
|
|
21
21
|
const vertex1 = new UndirectedVertex('A');
|
|
22
22
|
const vertex2 = new UndirectedVertex('B');
|
|
23
23
|
|
|
@@ -76,8 +76,8 @@ describe('UndirectedGraph', () => {
|
|
|
76
76
|
undirectedGraph = new UndirectedGraph<string, string>();
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
// Test adding
|
|
80
|
-
it('should add
|
|
79
|
+
// Test adding vertices to the graph
|
|
80
|
+
it('should add vertices to the graph', () => {
|
|
81
81
|
const vertexA = new UndirectedVertex('A', 'Location A');
|
|
82
82
|
const vertexB = new UndirectedVertex('B', 'Location B');
|
|
83
83
|
|
|
@@ -130,7 +130,7 @@ describe('UndirectedGraph', () => {
|
|
|
130
130
|
const edgeAB = new UndirectedEdge('A', 'B', 3, 'Edge between A and B');
|
|
131
131
|
const edgeBC = new UndirectedEdge('B', 'C', 4, 'Edge between B and C');
|
|
132
132
|
|
|
133
|
-
edgeAB.
|
|
133
|
+
edgeAB.endpoints = edgeAB.endpoints;
|
|
134
134
|
expect(undirectedGraph.edgeMap.size).toBe(0);
|
|
135
135
|
undirectedGraph.addVertex(vertexA);
|
|
136
136
|
undirectedGraph.addVertex(vertexB);
|
|
@@ -151,7 +151,7 @@ describe('UndirectedGraph', () => {
|
|
|
151
151
|
|
|
152
152
|
it('should getAllPathsBetween work well in 66 vertexes 97 edges graph', () => {
|
|
153
153
|
const graph = new UndirectedGraph<{ name: string }, number>();
|
|
154
|
-
for (const v of
|
|
154
|
+
for (const v of saltyVertices) {
|
|
155
155
|
graph.addVertex(v.name, v);
|
|
156
156
|
}
|
|
157
157
|
for (const e of saltyEdges) {
|
|
@@ -181,16 +181,16 @@ describe('UndirectedGraph', () => {
|
|
|
181
181
|
dg.addVertex('hey');
|
|
182
182
|
dg.addEdge('hello', 'hi');
|
|
183
183
|
dg.addEdge('hello', 'hey');
|
|
184
|
-
expect(dg.getEdge('hello', 'hi')?.
|
|
185
|
-
expect(dg.getEdge('hello', 'hi')?.
|
|
186
|
-
expect(dg.getEdge('hello', 'hey')?.
|
|
187
|
-
expect(dg.getEdge('hello', 'hey')?.
|
|
184
|
+
expect(dg.getEdge('hello', 'hi')?.endpoints[0]).toBe('hello');
|
|
185
|
+
expect(dg.getEdge('hello', 'hi')?.endpoints[1]).toBe('hi');
|
|
186
|
+
expect(dg.getEdge('hello', 'hey')?.endpoints[0]).toBe('hello');
|
|
187
|
+
expect(dg.getEdge('hello', 'hey')?.endpoints[1]).toBe('hey');
|
|
188
188
|
dg.deleteEdge('hello', 'hi');
|
|
189
189
|
expect(dg.getEdge('hello', 'hi')).toBe(undefined);
|
|
190
190
|
expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(UndirectedEdge);
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
-
test('Removing a vertex of a
|
|
193
|
+
test('Removing a vertex of a UndirectedGraph should delete additional edges', () => {
|
|
194
194
|
const graph = new UndirectedGraph();
|
|
195
195
|
|
|
196
196
|
graph.addVertex('Hello');
|
|
@@ -212,13 +212,13 @@ describe('UndirectedGraph', () => {
|
|
|
212
212
|
dg.addEdge('hello', 'earth');
|
|
213
213
|
dg.addEdge('world', 'earth');
|
|
214
214
|
|
|
215
|
-
expect(dg.getEdge('hello', 'world')?.
|
|
215
|
+
expect(dg.getEdge('hello', 'world')?.endpoints[0]).toBe('hello');
|
|
216
216
|
expect(dg.edgeSet().length).toBe(3);
|
|
217
|
-
expect(dg.edgeSet()[0].
|
|
217
|
+
expect(dg.edgeSet()[0].endpoints).toEqual(['hello', 'world']);
|
|
218
218
|
|
|
219
219
|
dg.deleteVertex('hello');
|
|
220
220
|
expect(dg.edgeSet().length).toBe(1);
|
|
221
|
-
expect(dg.edgeSet()?.[0].
|
|
221
|
+
expect(dg.edgeSet()?.[0].endpoints[0]).toBe('world');
|
|
222
222
|
|
|
223
223
|
expect(dg.getEdge('hello', 'world')).toBe(undefined);
|
|
224
224
|
});
|
|
@@ -244,15 +244,15 @@ describe('cycles, strongly connected components, bridges, articular points in Un
|
|
|
244
244
|
graph.addEdge('E', 'H');
|
|
245
245
|
graph.addEdge('H', 'F');
|
|
246
246
|
const cycles = graph.getCycles();
|
|
247
|
-
const
|
|
247
|
+
// const cCs = graph.getCCs();
|
|
248
248
|
const bridges = graph.getBridges();
|
|
249
|
-
const
|
|
249
|
+
const cutVertices = graph.getCutVertices();
|
|
250
250
|
const dfnMap = graph.getDFNMap();
|
|
251
251
|
const lowMap = graph.getLowMap();
|
|
252
252
|
expect(cycles.length).toBe(3);
|
|
253
|
-
expect(
|
|
253
|
+
// expect(cCs.size).toBe(5);
|
|
254
254
|
expect(bridges.length).toBe(4);
|
|
255
|
-
expect(
|
|
255
|
+
expect(cutVertices.length).toBe(4);
|
|
256
256
|
expect(dfnMap.size).toBe(8);
|
|
257
257
|
expect(lowMap.size).toBe(8);
|
|
258
258
|
});
|
|
@@ -356,3 +356,248 @@ describe('UndirectedGraph getCycles', () => {
|
|
|
356
356
|
]);
|
|
357
357
|
});
|
|
358
358
|
});
|
|
359
|
+
|
|
360
|
+
describe('UndirectedGraph tarjan', () => {
|
|
361
|
+
test('should simple cycles graph tarjan cycles return correct result', () => {
|
|
362
|
+
const graph = new UndirectedGraph();
|
|
363
|
+
|
|
364
|
+
graph.addVertex('A');
|
|
365
|
+
graph.addVertex('B');
|
|
366
|
+
graph.addVertex('C');
|
|
367
|
+
graph.addVertex('D');
|
|
368
|
+
|
|
369
|
+
graph.addEdge('A', 'B');
|
|
370
|
+
graph.addEdge('B', 'C');
|
|
371
|
+
graph.addEdge('C', 'A');
|
|
372
|
+
graph.addEdge('A', 'D');
|
|
373
|
+
graph.addEdge('D', 'C');
|
|
374
|
+
const cycles = graph.getCycles();
|
|
375
|
+
expect(cycles.length).toBe(3);
|
|
376
|
+
expect(cycles).toEqual([
|
|
377
|
+
['A', 'B', 'C'],
|
|
378
|
+
['A', 'B', 'C', 'D'],
|
|
379
|
+
['A', 'C', 'D']
|
|
380
|
+
]);
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
function createExampleGraph1() {
|
|
384
|
+
const graph = new UndirectedGraph();
|
|
385
|
+
graph.addVertex('A');
|
|
386
|
+
graph.addVertex('B');
|
|
387
|
+
graph.addVertex('C');
|
|
388
|
+
graph.addVertex('D');
|
|
389
|
+
graph.addVertex('E');
|
|
390
|
+
graph.addEdge('A', 'B');
|
|
391
|
+
graph.addEdge('A', 'C');
|
|
392
|
+
graph.addEdge('B', 'D');
|
|
393
|
+
graph.addEdge('C', 'D');
|
|
394
|
+
graph.addEdge('D', 'E');
|
|
395
|
+
graph.addEdge('E', 'B');
|
|
396
|
+
return graph;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
test('should tarjan cut vertexes return correct result', () => {
|
|
400
|
+
const graph = createExampleGraph1();
|
|
401
|
+
const cutVertices = graph.tarjan().cutVertices;
|
|
402
|
+
expect(cutVertices.length).toBe(0);
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
test('should tarjan bridges return correct result', () => {
|
|
406
|
+
const graph = createExampleGraph1();
|
|
407
|
+
const bridges = graph.tarjan().bridges;
|
|
408
|
+
expect(bridges.length).toBe(0);
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
test('should 3 cycles graph tarjan cut vertexes return correct result', () => {
|
|
412
|
+
const graph = createExampleGraph1();
|
|
413
|
+
const cutVertices = graph.tarjan().cutVertices;
|
|
414
|
+
expect(cutVertices.length).toBe(0);
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
test('should 3 cycles graph tarjan bridges return correct result', () => {
|
|
418
|
+
const graph = createExampleGraph1();
|
|
419
|
+
const bridges = graph.tarjan().bridges;
|
|
420
|
+
expect(bridges.length).toBe(0);
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
test('should cuttable graph tarjan cut vertexes return correct result', () => {
|
|
424
|
+
const graph = createExampleGraph3();
|
|
425
|
+
const cutVertices = graph.tarjan().cutVertices;
|
|
426
|
+
expect(cutVertices.length).toBe(3);
|
|
427
|
+
expect(cutVertices.map(cv => cv.key)).toEqual(['B', 'E', 'A']);
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
test('should cuttable graph tarjan bridges return correct result', () => {
|
|
431
|
+
const graph = createExampleGraph3();
|
|
432
|
+
const bridges = graph.tarjan().bridges;
|
|
433
|
+
expect(bridges.length).toBe(2);
|
|
434
|
+
expect(bridges.map(edge => edge.endpoints)).toEqual([
|
|
435
|
+
['A', 'B'],
|
|
436
|
+
['A', 'E']
|
|
437
|
+
]);
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
test('should more cuttable graph tarjan cut vertexes return correct result', () => {
|
|
441
|
+
const graph = createExampleGraph4();
|
|
442
|
+
const cutVertices = graph.tarjan().cutVertices;
|
|
443
|
+
expect(cutVertices.length).toBe(4);
|
|
444
|
+
expect(cutVertices.map(cv => cv.key)).toEqual(['H', 'B', 'E', 'A']);
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
test('should more cuttable graph tarjan bridges return correct result', () => {
|
|
448
|
+
const graph = createExampleGraph4();
|
|
449
|
+
const bridges = graph.tarjan().bridges;
|
|
450
|
+
expect(bridges.length).toBe(2);
|
|
451
|
+
expect(bridges.map(edge => edge.endpoints)).toEqual([
|
|
452
|
+
['A', 'B'],
|
|
453
|
+
['A', 'E']
|
|
454
|
+
]);
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
test('should uncuttable graph tarjan cut vertexes return correct result', () => {
|
|
458
|
+
const graph = createExampleGraph5();
|
|
459
|
+
const cutVertices = graph.tarjan().cutVertices;
|
|
460
|
+
expect(cutVertices.length).toBe(1);
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
test('should uncuttable graph tarjan bridges return correct result', () => {
|
|
464
|
+
const graph = createExampleGraph5();
|
|
465
|
+
const bridges = graph.tarjan().bridges;
|
|
466
|
+
expect(bridges.length).toBe(0);
|
|
467
|
+
});
|
|
468
|
+
|
|
469
|
+
function createExampleGraph2() {
|
|
470
|
+
const graph = createExampleGraph1();
|
|
471
|
+
graph.addVertex('F');
|
|
472
|
+
graph.addVertex('G');
|
|
473
|
+
graph.addEdge('B', 'F');
|
|
474
|
+
graph.addEdge('F', 'E');
|
|
475
|
+
graph.addEdge('C', 'G');
|
|
476
|
+
graph.addEdge('G', 'A');
|
|
477
|
+
return graph;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
test('should 3 cycles graph tarjan cycles return correct result', () => {
|
|
481
|
+
const graph = createExampleGraph2();
|
|
482
|
+
const cycles = graph.getCycles();
|
|
483
|
+
expect(cycles.length).toBe(10);
|
|
484
|
+
expect(cycles).toEqual([
|
|
485
|
+
['A', 'B', 'D', 'C'],
|
|
486
|
+
['A', 'B', 'D', 'C', 'G'],
|
|
487
|
+
['A', 'B', 'E', 'D', 'C'],
|
|
488
|
+
['A', 'B', 'E', 'D', 'C', 'G'],
|
|
489
|
+
['A', 'B', 'F', 'E', 'D', 'C'],
|
|
490
|
+
['A', 'B', 'F', 'E', 'D', 'C', 'G'],
|
|
491
|
+
['A', 'C', 'G'],
|
|
492
|
+
['B', 'D', 'E'],
|
|
493
|
+
['B', 'D', 'E', 'F'],
|
|
494
|
+
['B', 'E', 'F']
|
|
495
|
+
]);
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
function createExampleGraph3() {
|
|
499
|
+
const graph = new UndirectedGraph();
|
|
500
|
+
graph.addVertex('A');
|
|
501
|
+
graph.addVertex('B');
|
|
502
|
+
graph.addVertex('C');
|
|
503
|
+
graph.addVertex('D');
|
|
504
|
+
graph.addVertex('E');
|
|
505
|
+
graph.addVertex('F');
|
|
506
|
+
graph.addVertex('G');
|
|
507
|
+
graph.addEdge('A', 'B');
|
|
508
|
+
graph.addEdge('B', 'C');
|
|
509
|
+
graph.addEdge('C', 'D');
|
|
510
|
+
graph.addEdge('D', 'B');
|
|
511
|
+
graph.addEdge('A', 'E');
|
|
512
|
+
graph.addEdge('E', 'F');
|
|
513
|
+
graph.addEdge('F', 'G');
|
|
514
|
+
graph.addEdge('G', 'E');
|
|
515
|
+
return graph;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
test('should cuttable graph tarjan cycles return correct result', () => {
|
|
519
|
+
const graph = createExampleGraph3();
|
|
520
|
+
const cycles = graph.getCycles();
|
|
521
|
+
expect(cycles.length).toBe(2);
|
|
522
|
+
expect(cycles).toEqual([
|
|
523
|
+
['B', 'C', 'D'],
|
|
524
|
+
['E', 'F', 'G']
|
|
525
|
+
]);
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
// test('should cuttable graph tarjan CCs return correct result', () => {
|
|
529
|
+
// const graph = createExampleGraph3();
|
|
530
|
+
// const ccs = graph.tarjan().CCs;
|
|
531
|
+
// expect(ccs.size).toBe(3);
|
|
532
|
+
// expect(getAsVerticesArrays(ccs)).toEqual([["D", "C", "B"], ["G", "F", "E"], ["A"]]);
|
|
533
|
+
// });
|
|
534
|
+
|
|
535
|
+
function createExampleGraph4() {
|
|
536
|
+
const graph = createExampleGraph3();
|
|
537
|
+
graph.addVertex('H');
|
|
538
|
+
graph.addVertex('I');
|
|
539
|
+
graph.addVertex('J');
|
|
540
|
+
graph.addVertex('K');
|
|
541
|
+
graph.addEdge('C', 'H');
|
|
542
|
+
graph.addEdge('H', 'I');
|
|
543
|
+
graph.addEdge('I', 'D');
|
|
544
|
+
graph.addEdge('H', 'J');
|
|
545
|
+
graph.addEdge('J', 'K');
|
|
546
|
+
graph.addEdge('K', 'H');
|
|
547
|
+
return graph;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
test('should more cuttable graph tarjan cycles return correct result', () => {
|
|
551
|
+
const graph = createExampleGraph4();
|
|
552
|
+
const cycles = graph.getCycles();
|
|
553
|
+
expect(cycles.length).toBe(5);
|
|
554
|
+
expect(cycles).toEqual([
|
|
555
|
+
['B', 'C', 'D'],
|
|
556
|
+
['B', 'C', 'H', 'I', 'D'],
|
|
557
|
+
['C', 'D', 'I', 'H'],
|
|
558
|
+
['E', 'F', 'G'],
|
|
559
|
+
['H', 'J', 'K']
|
|
560
|
+
]);
|
|
561
|
+
});
|
|
562
|
+
|
|
563
|
+
// test('should more cuttable graph tarjan SCCs return correct result', () => {
|
|
564
|
+
// const graph = createExampleGraph4();
|
|
565
|
+
// const ccs = graph.tarjan().CCs;
|
|
566
|
+
// expect(ccs.size).toBe(3);
|
|
567
|
+
// expect(getAsVerticesArrays(ccs)).toEqual([["K", "J", "I", "H", "D", "C", "B"], ["G", "F", "E"], ["A"]]);
|
|
568
|
+
// });
|
|
569
|
+
|
|
570
|
+
function createExampleGraph5() {
|
|
571
|
+
const graph = createExampleGraph4();
|
|
572
|
+
graph.addEdge('F', 'H');
|
|
573
|
+
return graph;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
test('should uncuttable graph tarjan cycles return correct result', () => {
|
|
577
|
+
const graph = createExampleGraph5();
|
|
578
|
+
const cycles = graph.getCycles();
|
|
579
|
+
expect(cycles.length).toBe(13);
|
|
580
|
+
expect(cycles).toEqual([
|
|
581
|
+
['A', 'B', 'C', 'D', 'I', 'H', 'F', 'E'],
|
|
582
|
+
['A', 'B', 'C', 'D', 'I', 'H', 'F', 'G', 'E'],
|
|
583
|
+
['A', 'B', 'C', 'H', 'F', 'E'],
|
|
584
|
+
['A', 'B', 'C', 'H', 'F', 'G', 'E'],
|
|
585
|
+
['A', 'B', 'D', 'C', 'H', 'F', 'E'],
|
|
586
|
+
['A', 'B', 'D', 'C', 'H', 'F', 'G', 'E'],
|
|
587
|
+
['A', 'B', 'D', 'I', 'H', 'F', 'E'],
|
|
588
|
+
['A', 'B', 'D', 'I', 'H', 'F', 'G', 'E'],
|
|
589
|
+
['B', 'C', 'D'],
|
|
590
|
+
['B', 'C', 'H', 'I', 'D'],
|
|
591
|
+
['C', 'D', 'I', 'H'],
|
|
592
|
+
['E', 'F', 'G'],
|
|
593
|
+
['H', 'J', 'K']
|
|
594
|
+
]);
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
// test('should uncuttable graph tarjan SCCs return correct result', () => {
|
|
598
|
+
// const graph = createExampleGraph5();
|
|
599
|
+
// const ccs = graph.tarjan().CCs;
|
|
600
|
+
// expect(ccs.size).toBe(3);
|
|
601
|
+
// expect(getAsVerticesArrays(ccs)).toEqual([["K", "J", "I", "H", "D", "C", "B"], ["G", "F", "E"], ["A"]]);
|
|
602
|
+
// });
|
|
603
|
+
});
|
|
@@ -104,6 +104,8 @@ describe('Queue', () => {
|
|
|
104
104
|
expect([...cloned]).toEqual(['1', '6', '0', '5', '9']);
|
|
105
105
|
queue.delete('5');
|
|
106
106
|
expect([...queue]).toEqual(['1', '6', '0', '9']);
|
|
107
|
+
queue.deleteAt(2);
|
|
108
|
+
expect([...queue]).toEqual(['1', '6', '9']);
|
|
107
109
|
expect([...cloned]).toEqual(['1', '6', '0', '5', '9']);
|
|
108
110
|
});
|
|
109
111
|
});
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
RedBlackTree,
|
|
15
15
|
SinglyLinkedList,
|
|
16
16
|
Stack,
|
|
17
|
-
|
|
17
|
+
TreeMultiMap,
|
|
18
18
|
Trie
|
|
19
19
|
} from '../../src';
|
|
20
20
|
import { isDebugTest } from '../config';
|
|
@@ -167,8 +167,8 @@ describe('conversions', () => {
|
|
|
167
167
|
]);
|
|
168
168
|
});
|
|
169
169
|
|
|
170
|
-
it('Entry Array to
|
|
171
|
-
const treeMulti = new
|
|
170
|
+
it('Entry Array to TreeMultiMap', () => {
|
|
171
|
+
const treeMulti = new TreeMultiMap<number>(entries);
|
|
172
172
|
expect(treeMulti.size).toBe(9);
|
|
173
173
|
isDebug && treeMulti.print();
|
|
174
174
|
expect([...treeMulti]).toEqual([
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-multimap.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/tree-multimap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { TreeMultimap, TreeMultimapNode } from '../../../data-structures';
|
|
2
|
-
import type { AVLTreeOptions } from './avl-tree';
|
|
3
|
-
export type TreeMultimapNodeNested<K, V> = TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
4
|
-
export type TreeMultimapNested<K, V, N extends TreeMultimapNode<K, V, N>> = TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
5
|
-
export type TreeMultimapOptions<K> = AVLTreeOptions<K> & {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-multimap.js","sourceRoot":"","sources":["../../../../../src/types/data-structures/binary-tree/tree-multimap.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { TreeMultimap, TreeMultimapNode } from '../../../data-structures';
|
|
2
|
-
import type { AVLTreeOptions } from './avl-tree';
|
|
3
|
-
export type TreeMultimapNodeNested<K, V> = TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
4
|
-
export type TreeMultimapNested<K, V, N extends TreeMultimapNode<K, V, N>> = TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
5
|
-
export type TreeMultimapOptions<K> = AVLTreeOptions<K> & {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { TreeMultimap, TreeMultimapNode } from '../../../data-structures';
|
|
2
|
-
import type { AVLTreeOptions } from './avl-tree';
|
|
3
|
-
|
|
4
|
-
export type TreeMultimapNodeNested<K, V> = TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, TreeMultimapNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
5
|
-
|
|
6
|
-
export type TreeMultimapNested<K, V, N extends TreeMultimapNode<K, V, N>> = TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, TreeMultimap<K, V, N, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
7
|
-
|
|
8
|
-
export type TreeMultimapOptions<K> = AVLTreeOptions<K> & {}
|
/package/dist/mjs/types/data-structures/binary-tree/{tree-multimap.js → avl-tree-multi-map.js}
RENAMED
|
File without changes
|