data-structure-typed 1.52.0 → 1.52.1
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 +1 -1
- package/README.md +128 -41
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +11 -11
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +6 -6
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +11 -11
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +6 -6
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +97 -97
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +50 -50
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +35 -35
- package/dist/cjs/data-structures/binary-tree/bst.js +15 -15
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +8 -8
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +6 -6
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +10 -10
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +5 -5
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.js +2 -1
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +7 -0
- package/dist/cjs/data-structures/queue/deque.js +16 -1
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +0 -1
- package/dist/cjs/data-structures/queue/queue.js +0 -1
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/cjs/types/common.d.ts +1 -22
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +18 -1
- package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -0
- package/dist/cjs/types/data-structures/queue/deque.d.ts +1 -0
- package/dist/cjs/utils/number.js +1 -2
- package/dist/cjs/utils/number.js.map +1 -1
- package/dist/cjs/utils/utils.js +2 -2
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +11 -11
- package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +6 -6
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +11 -11
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +6 -6
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +97 -97
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +50 -50
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +35 -35
- package/dist/mjs/data-structures/binary-tree/bst.js +15 -15
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +8 -8
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +6 -6
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +10 -10
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +5 -5
- package/dist/mjs/data-structures/graph/directed-graph.js +2 -1
- package/dist/mjs/data-structures/queue/deque.d.ts +7 -0
- package/dist/mjs/data-structures/queue/deque.js +16 -1
- package/dist/mjs/data-structures/queue/queue.d.ts +0 -1
- package/dist/mjs/data-structures/queue/queue.js +0 -1
- package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/mjs/types/common.d.ts +1 -22
- package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +18 -1
- package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +3 -0
- package/dist/mjs/types/data-structures/queue/deque.d.ts +1 -0
- package/dist/umd/data-structure-typed.js +105 -91
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +7 -7
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +12 -12
- package/src/data-structures/binary-tree/avl-tree.ts +11 -11
- package/src/data-structures/binary-tree/binary-tree.ts +151 -147
- package/src/data-structures/binary-tree/bst.ts +44 -41
- package/src/data-structures/binary-tree/rb-tree.ts +10 -10
- package/src/data-structures/binary-tree/tree-multi-map.ts +10 -10
- package/src/data-structures/graph/directed-graph.ts +2 -1
- package/src/data-structures/queue/deque.ts +15 -1
- package/src/data-structures/queue/queue.ts +0 -1
- package/src/interfaces/binary-tree.ts +3 -3
- package/src/types/common.ts +2 -24
- package/src/types/data-structures/binary-tree/binary-tree.ts +21 -1
- package/src/types/data-structures/binary-tree/bst.ts +7 -0
- package/src/types/data-structures/queue/deque.ts +4 -1
- package/test/unit/data-structures/graph/directed-graph.test.ts +28 -0
- package/test/unit/data-structures/heap/heap.test.ts +20 -0
- package/test/unit/data-structures/queue/deque.test.ts +19 -0
|
@@ -995,3 +995,31 @@ describe('DirectedGraph tarjan', () => {
|
|
|
995
995
|
expect(getAsVerticesArrays(sccs)).toEqual([['K', 'J', 'I', 'H', 'D', 'C', 'B'], ['G', 'F', 'E'], ['A']]);
|
|
996
996
|
});
|
|
997
997
|
});
|
|
998
|
+
|
|
999
|
+
describe('delete', () => {
|
|
1000
|
+
it(`deleteVertex deletes all of it's neighbors from the inEdge Map`, () => {
|
|
1001
|
+
|
|
1002
|
+
const graph = new DirectedGraph();
|
|
1003
|
+
graph.addVertex('A');
|
|
1004
|
+
graph.addVertex('B');
|
|
1005
|
+
graph.addVertex('C');
|
|
1006
|
+
|
|
1007
|
+
graph.addEdge('B', 'A');
|
|
1008
|
+
graph.addEdge('C', 'A');
|
|
1009
|
+
|
|
1010
|
+
// 'Incoming to A should contain ['B','C']
|
|
1011
|
+
expect(graph.incomingEdgesOf('A').map((e) => e.src)).toEqual(['B','C']); // ['B','C']
|
|
1012
|
+
|
|
1013
|
+
// Now delete B, which has no direct link to C, only that C -> A.
|
|
1014
|
+
graph.deleteVertex('B');
|
|
1015
|
+
|
|
1016
|
+
// Now if we do the same call to incoming edges for we should get only ['C']
|
|
1017
|
+
expect(graph.incomingEdgesOf('A').map((e) => e.src)).toEqual(['C']); // [];
|
|
1018
|
+
|
|
1019
|
+
// but it only shows an empty array, since we deleted all of `A's edges, not just the one to `B`.
|
|
1020
|
+
|
|
1021
|
+
// If we check C, it correctly shows A as an outgoing edge,
|
|
1022
|
+
// even though A no longer has any knowledge of C linking to it.
|
|
1023
|
+
expect(graph.outgoingEdgesOf('C').map((e) => e.dest)).toEqual(['A']);
|
|
1024
|
+
});
|
|
1025
|
+
})
|
|
@@ -2,6 +2,26 @@ import { FibonacciHeap, Heap, MaxHeap, MinHeap } from '../../../../src';
|
|
|
2
2
|
import { logBigOMetricsWrap } from '../../../utils';
|
|
3
3
|
|
|
4
4
|
describe('Heap Operation Test', () => {
|
|
5
|
+
|
|
6
|
+
it('should heap add and delete work well', function () {
|
|
7
|
+
const hp = new MinHeap<number>();
|
|
8
|
+
|
|
9
|
+
hp.add(2);
|
|
10
|
+
hp.add(3);
|
|
11
|
+
hp.add(1);
|
|
12
|
+
hp.add(4);
|
|
13
|
+
hp.add(6);
|
|
14
|
+
hp.add(5);
|
|
15
|
+
hp.add(7);
|
|
16
|
+
|
|
17
|
+
hp.delete(4);
|
|
18
|
+
hp.delete(7);
|
|
19
|
+
hp.delete(1);
|
|
20
|
+
|
|
21
|
+
expect(hp.size).toBe(4);
|
|
22
|
+
expect(hp.peek()).toBe(2);
|
|
23
|
+
});
|
|
24
|
+
|
|
5
25
|
it('should numeric heap work well', function () {
|
|
6
26
|
const minNumHeap = new MinHeap<number>();
|
|
7
27
|
minNumHeap.add(1);
|
|
@@ -260,6 +260,25 @@ describe('Deque - Utility Operations', () => {
|
|
|
260
260
|
// deque.print();
|
|
261
261
|
// expect(consoleSpy).toHaveBeenCalledWith([1, 2]);
|
|
262
262
|
});
|
|
263
|
+
|
|
264
|
+
test('should maxLen work well', () => {
|
|
265
|
+
const dequeMaxLen = new Deque([3, 4, 5, 6, 7], { maxLen: 3 });
|
|
266
|
+
expect(dequeMaxLen.size).toBe(3);
|
|
267
|
+
expect(dequeMaxLen.toArray()).toEqual([5, 6 ,7]);
|
|
268
|
+
dequeMaxLen.unshift(4);
|
|
269
|
+
dequeMaxLen.unshift(3);
|
|
270
|
+
expect(dequeMaxLen.size).toBe(3);
|
|
271
|
+
expect(dequeMaxLen.toArray()).toEqual([3, 4, 5]);
|
|
272
|
+
|
|
273
|
+
const dequeNoMaxLen = new Deque([3, 4, 5, 6, 7]);
|
|
274
|
+
expect(dequeNoMaxLen.size).toBe(5);
|
|
275
|
+
expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 5, 6, 7]);
|
|
276
|
+
dequeNoMaxLen.unshift(4);
|
|
277
|
+
dequeNoMaxLen.unshift(3);
|
|
278
|
+
expect(dequeNoMaxLen.size).toBe(7);
|
|
279
|
+
expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 3, 4, 5, 6, 7]);
|
|
280
|
+
|
|
281
|
+
});
|
|
263
282
|
});
|
|
264
283
|
|
|
265
284
|
describe('Deque - Additional Operations', () => {
|