@raikuxq/alg-ds 1.2.0 → 1.2.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/README.md +5 -11
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.d.ts +4 -0
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +5 -1
- package/lib/app/algorithms/graph/searching/hasPath.d.ts +3 -3
- package/lib/app/algorithms/graph/searching/hasPath.js +3 -3
- package/lib/app/algorithms/graph/searching/shortestPath.d.ts +3 -3
- package/lib/app/algorithms/graph/searching/shortestPath.js +3 -3
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.js +1 -1
- package/lib/app/algorithms/transpose-matrix.d.ts +1 -0
- package/lib/app/algorithms/transpose-matrix.js +2 -1
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +1 -1
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +1 -2
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +6 -1
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +10 -5
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +1 -0
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +2 -1
- package/lib/app/data-structures/Graph/AbstractGraph.d.ts +3 -3
- package/lib/app/data-structures/Graph/AbstractGraph.js +3 -3
- package/lib/app/data-structures/Graph/DirectedGraph.d.ts +3 -0
- package/lib/app/data-structures/Graph/DirectedGraph.js +4 -1
- package/lib/app/data-structures/Graph/UndirectedGraph.d.ts +3 -0
- package/lib/app/data-structures/Graph/UndirectedGraph.js +4 -1
- package/lib/app/data-structures/Graph/_helpers/createGraph.js +2 -2
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +2 -2
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +6 -6
- package/lib/app/data-structures/HashTable/HashTable.d.ts +4 -4
- package/lib/app/data-structures/HashTable/HashTable.js +6 -6
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +17 -8
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +22 -16
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +1 -7
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +1 -54
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.d.ts +18 -0
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.js +86 -0
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.d.ts +18 -0
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.js +68 -0
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +1 -7
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +1 -36
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +1 -1
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +24 -9
- package/lib/app/data-structures/LoopedArray/LoopedArray.d.ts +3 -0
- package/lib/app/data-structures/LoopedArray/LoopedArray.js +4 -8
- package/lib/app/data-structures/Queue/Queue.d.ts +3 -3
- package/lib/app/data-structures/Queue/Queue.js +3 -3
- package/lib/app/data-structures/Stack/Stack.d.ts +3 -3
- package/lib/app/data-structures/Stack/Stack.js +3 -3
- package/lib/app/types/EnumGraphType.d.ts +2 -2
- package/lib/app/types/EnumGraphType.js +2 -2
- package/lib/app/types/EnumRandomGenerationFormat.d.ts +2 -2
- package/lib/app/types/EnumRandomGenerationFormat.js +2 -2
- package/lib/app/types/EnumSortType.d.ts +5 -5
- package/lib/app/types/EnumSortType.js +5 -5
- package/lib/app/types/EnumTreeTraversalType.d.ts +3 -3
- package/lib/app/types/EnumTreeTraversalType.js +4 -4
- package/lib/app/utils.d.ts +2 -2
- package/lib/app/utils.js +5 -4
- package/lib/exports/data-structures.d.ts +3 -1
- package/lib/exports/data-structures.js +6 -2
- package/lib/exports.d.ts +3 -1
- package/lib/exports.js +6 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ Common algorithms and data structures.
|
|
|
3
3
|
Written in TypeScript, tested with Jest.
|
|
4
4
|
|
|
5
5
|
# Documentation
|
|
6
|
-
Documentation app
|
|
6
|
+
Documentation app: [raikuxq-algorithms.netlify.app/guide](https://raikuxq-algorithms.netlify.app/guide)
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
# Usage as package
|
|
@@ -15,17 +15,11 @@ Install by using any of these commands:
|
|
|
15
15
|
# Usage as repository
|
|
16
16
|
|
|
17
17
|
Clone this repository and install dependencies by using `yarn` command.
|
|
18
|
-
|
|
19
|
-
+ `yarn test` - run all tests via jest
|
|
20
|
-
|
|
18
|
+
+ `yarn test` - run all tests via jest
|
|
21
19
|
+ `yarn dev` - run in dev mode via nodemon (src/index.ts is an entrypoint)
|
|
22
|
-
|
|
23
20
|
+ `yarn build` - compile ts sources into js files
|
|
24
|
-
|
|
25
21
|
+ `yarn start` - build and run in production mode
|
|
26
|
-
|
|
27
22
|
+ `yarn lint` - lint check via eslint
|
|
28
|
-
|
|
29
23
|
+ `yarn lint:fix` - fix source files via eslint
|
|
30
24
|
|
|
31
25
|
|
|
@@ -40,7 +34,7 @@ Clone this repository and install dependencies by using `yarn` command.
|
|
|
40
34
|
+ [Stack](#stack)
|
|
41
35
|
+ [Queue](#queue)
|
|
42
36
|
+ [Non-linear data structures](#non-linear-data-structures)
|
|
43
|
-
+ [
|
|
37
|
+
+ [HASH table](#hash-table)
|
|
44
38
|
+ [Graph](#graph)
|
|
45
39
|
+ [Binary tree](#binary-trees)
|
|
46
40
|
|
|
@@ -135,7 +129,7 @@ Extends [IConvertableToArray](src/app/types/IConvertableToArray.ts) interface.
|
|
|
135
129
|
|
|
136
130
|
# Non linear data structures
|
|
137
131
|
|
|
138
|
-
##
|
|
132
|
+
## HASH Table
|
|
139
133
|
### Interfaces
|
|
140
134
|
[IKeyValueStorage](src/app/types/IKeyValueStorage.ts) — Contains basic key-value storages operations.
|
|
141
135
|
|
|
@@ -228,5 +222,5 @@ Extends [BinarySearchNode](src/app/data-structures/BinaryTree/BinarySearchTree/B
|
|
|
228
222
|
|
|
229
223
|
[RandBinarySearchTree](src/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.ts)
|
|
230
224
|
— Implementation of randomized binary search tree, which gives expected log(N) height.
|
|
231
|
-
|
|
225
|
+
INSERTION have a 1/N+1 probability of inserting into root.
|
|
232
226
|
Extends [BinarySearchTree](src/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.ts).
|
|
@@ -14,6 +14,7 @@ export default abstract class AbstractGraphIterator<T> implements IGraphIterator
|
|
|
14
14
|
protected abstract hasNextImpl(): boolean;
|
|
15
15
|
/**
|
|
16
16
|
* @inheritDoc
|
|
17
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
17
18
|
*/
|
|
18
19
|
initIterator(from: T): void;
|
|
19
20
|
/**
|
|
@@ -22,14 +23,17 @@ export default abstract class AbstractGraphIterator<T> implements IGraphIterator
|
|
|
22
23
|
hasNext(): boolean;
|
|
23
24
|
/**
|
|
24
25
|
* @inheritDoc
|
|
26
|
+
* @throws {IllegalStateException} when next element does not exist
|
|
25
27
|
*/
|
|
26
28
|
next(): T;
|
|
27
29
|
/**
|
|
28
30
|
* @inheritDoc
|
|
31
|
+
* @throws {IllegalStateException} when current element does not exist
|
|
29
32
|
*/
|
|
30
33
|
current(): T;
|
|
31
34
|
/**
|
|
32
35
|
* @inheritDoc
|
|
36
|
+
* @throws {IllegalStateException} when there is no path between given vertices
|
|
33
37
|
*/
|
|
34
38
|
getPath(from: T, to: T): Array<T>;
|
|
35
39
|
}
|
|
@@ -20,6 +20,7 @@ var AbstractGraphIterator = /** @class */ (function () {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* @inheritDoc
|
|
23
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
23
24
|
*/
|
|
24
25
|
AbstractGraphIterator.prototype.initIterator = function (from) {
|
|
25
26
|
if (!this.graph.hasVertex(from)) {
|
|
@@ -35,6 +36,7 @@ var AbstractGraphIterator = /** @class */ (function () {
|
|
|
35
36
|
};
|
|
36
37
|
/**
|
|
37
38
|
* @inheritDoc
|
|
39
|
+
* @throws {IllegalStateException} when next element does not exist
|
|
38
40
|
*/
|
|
39
41
|
AbstractGraphIterator.prototype.next = function () {
|
|
40
42
|
if (!this.hasNext()) {
|
|
@@ -44,6 +46,7 @@ var AbstractGraphIterator = /** @class */ (function () {
|
|
|
44
46
|
};
|
|
45
47
|
/**
|
|
46
48
|
* @inheritDoc
|
|
49
|
+
* @throws {IllegalStateException} when current element does not exist
|
|
47
50
|
*/
|
|
48
51
|
AbstractGraphIterator.prototype.current = function () {
|
|
49
52
|
try {
|
|
@@ -55,6 +58,7 @@ var AbstractGraphIterator = /** @class */ (function () {
|
|
|
55
58
|
};
|
|
56
59
|
/**
|
|
57
60
|
* @inheritDoc
|
|
61
|
+
* @throws {IllegalStateException} when there is no path between given vertices
|
|
58
62
|
*/
|
|
59
63
|
AbstractGraphIterator.prototype.getPath = function (from, to) {
|
|
60
64
|
var path = new Array();
|
|
@@ -80,4 +84,4 @@ var AbstractGraphIterator = /** @class */ (function () {
|
|
|
80
84
|
return AbstractGraphIterator;
|
|
81
85
|
}());
|
|
82
86
|
exports.default = AbstractGraphIterator;
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RHcmFwaEl0ZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hbGdvcml0aG1zL2dyYXBoL2l0ZXJhdG9yL0Fic3RyYWN0R3JhcGhJdGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSwrRUFBMEU7QUFDMUUsd0ZBQW1GO0FBRW5GO0lBTUU7O09BRUc7SUFDSCwrQkFBc0IsS0FBZ0I7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBT0Q7OztPQUdHO0lBQ0ksNENBQVksR0FBbkIsVUFBb0IsSUFBTztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxJQUFJLDZCQUFtQixDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUNBQU8sR0FBZDtRQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQ0FBSSxHQUFYO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQixNQUFNLElBQUksK0JBQXFCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUNoRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSx1Q0FBTyxHQUFkO1FBQ0UsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksK0JBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSx1Q0FBTyxHQUFkLFVBQWUsSUFBTyxFQUFFLEVBQUs7UUFDM0IsSUFBTSxJQUFJLEdBQWEsSUFBSSxLQUFLLEVBQUssQ0FBQztRQUN0QyxJQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QyxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbkI7YUFBTTtZQUNMLE9BQU8sYUFBYSxFQUFFO2dCQUNwQixJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7b0JBQzFCLE1BQU07aUJBQ1A7Z0JBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDekIsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2pEO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDckIsTUFBTSxJQUFJLCtCQUFxQixDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDM0Q7WUFFRCx1QkFBUSxJQUFJLEdBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFFLEVBQUUsR0FBRTtTQUN0QztJQUNILENBQUM7SUFDSCw0QkFBQztBQUFELENBQUMsQUExRkQsSUEwRkMifQ==
|
|
@@ -2,8 +2,8 @@ import IGraph from "../../../types/IGraph";
|
|
|
2
2
|
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
3
|
/**
|
|
4
4
|
* Check if graph has a path between two vertices
|
|
5
|
-
* @throws when start vertex was not found
|
|
6
|
-
* @throws when end vertex was not found
|
|
7
|
-
* @throws when there is no path between two vertices
|
|
5
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
6
|
+
* @throws {IsNotFoundException} when end vertex was not found
|
|
7
|
+
* @throws {IllegalStateException} when there is no path between two vertices
|
|
8
8
|
*/
|
|
9
9
|
export declare const hasPath: <T>(graph: IGraph<T>, from: T, to: T, strategy: IGraphIterationStrategy<T>) => boolean;
|
|
@@ -4,9 +4,9 @@ exports.hasPath = void 0;
|
|
|
4
4
|
var IsNotFoundException_1 = require("../../../exceptions/IsNotFoundException");
|
|
5
5
|
/**
|
|
6
6
|
* Check if graph has a path between two vertices
|
|
7
|
-
* @throws when start vertex was not found
|
|
8
|
-
* @throws when end vertex was not found
|
|
9
|
-
* @throws when there is no path between two vertices
|
|
7
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
8
|
+
* @throws {IsNotFoundException} when end vertex was not found
|
|
9
|
+
* @throws {IllegalStateException} when there is no path between two vertices
|
|
10
10
|
*/
|
|
11
11
|
exports.hasPath = function (graph, from, to, strategy) {
|
|
12
12
|
/* Validate */
|
|
@@ -2,8 +2,8 @@ import IGraph from "../../../types/IGraph";
|
|
|
2
2
|
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
3
|
/**
|
|
4
4
|
* Find the shortest path between two vertices
|
|
5
|
-
* @throws when start vertex was not found
|
|
6
|
-
* @throws when end vertex was not found
|
|
7
|
-
* @throws when there is no path between two vertices
|
|
5
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
6
|
+
* @throws {IsNotFoundException} when end vertex was not found
|
|
7
|
+
* @throws {IllegalStateException} when there is no path between two vertices
|
|
8
8
|
*/
|
|
9
9
|
export declare const shortestPath: <T>(graph: IGraph<T>, from: T, to: T, strategy: IGraphIterationStrategy<T>) => T[];
|
|
@@ -4,9 +4,9 @@ exports.shortestPath = void 0;
|
|
|
4
4
|
var IsNotFoundException_1 = require("../../../exceptions/IsNotFoundException");
|
|
5
5
|
/**
|
|
6
6
|
* Find the shortest path between two vertices
|
|
7
|
-
* @throws when start vertex was not found
|
|
8
|
-
* @throws when end vertex was not found
|
|
9
|
-
* @throws when there is no path between two vertices
|
|
7
|
+
* @throws {IsNotFoundException} when start vertex was not found
|
|
8
|
+
* @throws {IsNotFoundException} when end vertex was not found
|
|
9
|
+
* @throws {IllegalStateException} when there is no path between two vertices
|
|
10
10
|
*/
|
|
11
11
|
exports.shortestPath = function (graph, from, to, strategy) {
|
|
12
12
|
/* Validate */
|
|
@@ -9,6 +9,6 @@ exports.transposeDirectedGraph = function (sourceGraph) {
|
|
|
9
9
|
var verticesList = sourceGraph.vertices();
|
|
10
10
|
var matrix = presenterAdjacencyMatrix_1.presenterAdjacencyMatrix(sourceGraph);
|
|
11
11
|
var transposedMatrix = transpose_matrix_1.transposeMatrix(matrix);
|
|
12
|
-
return createGraphFromMatrix_1.createGraphFromMatrix(transposedMatrix, verticesList, EnumGraphType_1.EnumGraphType.
|
|
12
|
+
return createGraphFromMatrix_1.createGraphFromMatrix(transposedMatrix, verticesList, EnumGraphType_1.EnumGraphType.DIRECTED);
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlRGlyZWN0ZWRHcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9ncmFwaC90cmFuc3Bvc2luZy90cmFuc3Bvc2VEaXJlY3RlZEdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVHQUFzRztBQUN0Ryw4REFBNkQ7QUFDN0Qsa0ZBQWlGO0FBQ2pGLDJEQUF5RDtBQUU1QyxRQUFBLHNCQUFzQixHQUFHLFVBQ3BDLFdBQXNCO0lBRXRCLElBQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxJQUFNLE1BQU0sR0FBRyxtREFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxJQUFNLGdCQUFnQixHQUFHLGtDQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakQsT0FBTyw2Q0FBcUIsQ0FDMUIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWiw2QkFBYSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -5,6 +5,7 @@ var IllegalArgumentException_1 = require("../exceptions/base/IllegalArgumentExce
|
|
|
5
5
|
var utils_1 = require("../utils");
|
|
6
6
|
/**
|
|
7
7
|
* Will flips a matrix over its diagonal
|
|
8
|
+
* @throws {IllegalArgumentException} when array is not a matrix
|
|
8
9
|
*/
|
|
9
10
|
exports.transposeMatrix = function (matrix) {
|
|
10
11
|
if (!utils_1.checkIsArrayMatrix(matrix)) {
|
|
@@ -15,4 +16,4 @@ exports.transposeMatrix = function (matrix) {
|
|
|
15
16
|
return acc;
|
|
16
17
|
}, new Array(matrix.length));
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlLW1hdHJpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy90cmFuc3Bvc2UtbWF0cml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdGQUFtRjtBQUNuRixrQ0FBOEM7QUFFOUM7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsVUFBQyxNQUF1QjtJQUNyRCxJQUFJLENBQUMsMEJBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDL0IsTUFBTSxJQUFJLGtDQUF3QixDQUFDLDZCQUE2QixDQUFDLENBQUM7S0FDbkU7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVk7UUFDOUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNLElBQUssT0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQXBCLENBQW9CLENBQUMsQ0FBQztRQUNqRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import IBinaryTree from "../../../types/IBinaryTree";
|
|
2
|
-
import { FnCompareTwo } from "../../../types/FnCompareTwo";
|
|
3
2
|
import AbstractBinaryNode from "./AbstractBinaryNode";
|
|
3
|
+
import { FnCompareTwo } from "../../../types/FnCompareTwo";
|
|
4
4
|
import { EnumTreeTraversalType } from "../../../types/EnumTreeTraversalType";
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
@@ -19,7 +19,6 @@ var AbstractBinaryTree = /** @class */ (function () {
|
|
|
19
19
|
this.compare = function (a, b) { return a > b; };
|
|
20
20
|
if (fnCompare) {
|
|
21
21
|
this.compare = fnCompare;
|
|
22
|
-
console.log(this.compare);
|
|
23
22
|
}
|
|
24
23
|
this._head = null;
|
|
25
24
|
this._length = 0;
|
|
@@ -33,4 +32,4 @@ var AbstractBinaryTree = /** @class */ (function () {
|
|
|
33
32
|
return AbstractBinaryTree;
|
|
34
33
|
}());
|
|
35
34
|
exports.default = AbstractBinaryTree;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RCaW5hcnlUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvQmluYXJ5VHJlZS9BYnN0cmFjdEJpbmFyeVRyZWUvQWJzdHJhY3RCaW5hcnlUcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0E7O0dBRUc7QUFDSDtJQVdFOzs7O09BSUc7SUFDSCw0QkFBc0IsU0FBMkI7UUFmakQ7Ozs7O1dBS0c7UUFDTyxZQUFPLEdBQW9CLFVBQUMsQ0FBSSxFQUFFLENBQUksSUFBSyxPQUFBLENBQUMsR0FBRyxDQUFDLEVBQUwsQ0FBSyxDQUFDO1FBVXpELElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQ0FBTSxHQUFiO1FBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUF5Q0gseUJBQUM7QUFBRCxDQUFDLEFBdEVELElBc0VDIn0=
|
|
@@ -17,7 +17,7 @@ export default class BinarySearchTree<T> extends AbstractBinaryTree<T> {
|
|
|
17
17
|
constructor(fnCompare?: FnCompareTwo<T>);
|
|
18
18
|
/**
|
|
19
19
|
*
|
|
20
|
-
* @throws when
|
|
20
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
21
21
|
*/
|
|
22
22
|
protected checkIsEmpty(): void;
|
|
23
23
|
/**
|
|
@@ -37,14 +37,17 @@ export default class BinarySearchTree<T> extends AbstractBinaryTree<T> {
|
|
|
37
37
|
protected join(treeLeft: BinarySearchNode<T> | null, treeRight: BinarySearchNode<T> | null): BinarySearchNode<T> | null;
|
|
38
38
|
/**
|
|
39
39
|
* @inheritDoc
|
|
40
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
40
41
|
*/
|
|
41
42
|
max(): T;
|
|
42
43
|
/**
|
|
43
44
|
* @inheritDoc
|
|
45
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
44
46
|
*/
|
|
45
47
|
min(): T;
|
|
46
48
|
/**
|
|
47
49
|
* @inheritDoc
|
|
50
|
+
* @throws {IsAlreadyExistsException} when node already exists
|
|
48
51
|
*/
|
|
49
52
|
insert(value: T): void;
|
|
50
53
|
/**
|
|
@@ -53,6 +56,7 @@ export default class BinarySearchTree<T> extends AbstractBinaryTree<T> {
|
|
|
53
56
|
has(value: T): boolean;
|
|
54
57
|
/**
|
|
55
58
|
* @inheritDoc
|
|
59
|
+
* @throws {IsNotFoundException} when node was not found
|
|
56
60
|
*/
|
|
57
61
|
delete(value: T): void;
|
|
58
62
|
/**
|
|
@@ -61,6 +65,7 @@ export default class BinarySearchTree<T> extends AbstractBinaryTree<T> {
|
|
|
61
65
|
subtree(value: T): IBinaryTree<T>;
|
|
62
66
|
/**
|
|
63
67
|
* @inheritDoc
|
|
68
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
64
69
|
*/
|
|
65
70
|
traverse(type: EnumTreeTraversalType, from?: T): Array<T>;
|
|
66
71
|
/**
|
|
@@ -35,7 +35,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
*
|
|
38
|
-
* @throws when
|
|
38
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
39
39
|
*/
|
|
40
40
|
BinarySearchTree.prototype.checkIsEmpty = function () {
|
|
41
41
|
if (this._head === null) {
|
|
@@ -108,6 +108,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
108
108
|
};
|
|
109
109
|
/**
|
|
110
110
|
* @inheritDoc
|
|
111
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
111
112
|
*/
|
|
112
113
|
BinarySearchTree.prototype.max = function () {
|
|
113
114
|
this.checkIsEmpty();
|
|
@@ -119,6 +120,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
119
120
|
};
|
|
120
121
|
/**
|
|
121
122
|
* @inheritDoc
|
|
123
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
122
124
|
*/
|
|
123
125
|
BinarySearchTree.prototype.min = function () {
|
|
124
126
|
this.checkIsEmpty();
|
|
@@ -130,6 +132,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
130
132
|
};
|
|
131
133
|
/**
|
|
132
134
|
* @inheritDoc
|
|
135
|
+
* @throws {IsAlreadyExistsException} when node already exists
|
|
133
136
|
*/
|
|
134
137
|
BinarySearchTree.prototype.insert = function (value) {
|
|
135
138
|
if (this.has(value)) {
|
|
@@ -147,6 +150,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
147
150
|
};
|
|
148
151
|
/**
|
|
149
152
|
* @inheritDoc
|
|
153
|
+
* @throws {IsNotFoundException} when node was not found
|
|
150
154
|
*/
|
|
151
155
|
BinarySearchTree.prototype.delete = function (value) {
|
|
152
156
|
var _this = this;
|
|
@@ -204,6 +208,7 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
204
208
|
};
|
|
205
209
|
/**
|
|
206
210
|
* @inheritDoc
|
|
211
|
+
* @throws {CollectionIsEmptyException} when tree is empty
|
|
207
212
|
*/
|
|
208
213
|
BinarySearchTree.prototype.traverse = function (type, from) {
|
|
209
214
|
this.checkIsEmpty();
|
|
@@ -234,13 +239,13 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
234
239
|
storeInOrder(node.right);
|
|
235
240
|
};
|
|
236
241
|
switch (type) {
|
|
237
|
-
case EnumTreeTraversalType_1.EnumTreeTraversalType.
|
|
242
|
+
case EnumTreeTraversalType_1.EnumTreeTraversalType.IN_ORDER:
|
|
238
243
|
storeInOrder(root);
|
|
239
244
|
break;
|
|
240
|
-
case EnumTreeTraversalType_1.EnumTreeTraversalType.
|
|
245
|
+
case EnumTreeTraversalType_1.EnumTreeTraversalType.POST_ORDER:
|
|
241
246
|
storePostOrder(root);
|
|
242
247
|
break;
|
|
243
|
-
case EnumTreeTraversalType_1.EnumTreeTraversalType.
|
|
248
|
+
case EnumTreeTraversalType_1.EnumTreeTraversalType.PRE_ORDER:
|
|
244
249
|
storePreOrder(root);
|
|
245
250
|
break;
|
|
246
251
|
}
|
|
@@ -268,4 +273,4 @@ var BinarySearchTree = /** @class */ (function (_super) {
|
|
|
268
273
|
return BinarySearchTree;
|
|
269
274
|
}(AbstractBinaryTree_1.default));
|
|
270
275
|
exports.default = BinarySearchTree;
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
276
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5U2VhcmNoVHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0JpbmFyeVRyZWUvQmluYXJ5U2VhcmNoVHJlZS9CaW5hcnlTZWFyY2hUcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDhFQUE2RTtBQUU3RSwrRUFBMEU7QUFDMUUsdURBQWtEO0FBQ2xELDJDQUFzQztBQUN0Qyx5RkFBb0Y7QUFDcEYsK0VBQTBFO0FBQzFFLDZGQUF3RjtBQUV4Rjs7R0FFRztBQUNIO0lBQWlELG9DQUFxQjtJQU1wRTs7T0FFRztJQUNILDBCQUFtQixTQUEyQjtRQUE5QyxZQUNFLGtCQUFNLFNBQVMsQ0FBQyxTQUVqQjtRQURDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sdUNBQVksR0FBdEI7UUFDRSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxvQ0FBMEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGlEQUFzQixHQUFoQyxVQUFpQyxJQUF5QjtRQUN4RCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sbUNBQVEsR0FBbEIsVUFBbUIsS0FBUTtRQUN6QixJQUFJ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
|
|
@@ -47,6 +47,7 @@ export default class RandBinarySearchTree<T> extends BinarySearchTree<T> {
|
|
|
47
47
|
protected insertRandomly(createdNode: RandBinarySearchNode<T>): void;
|
|
48
48
|
/**
|
|
49
49
|
* @inheritDoc
|
|
50
|
+
* @throws {IsAlreadyExistsException} when node already exists
|
|
50
51
|
*/
|
|
51
52
|
insert(value: T): void;
|
|
52
53
|
/**
|
|
@@ -210,6 +210,7 @@ var RandBinarySearchTree = /** @class */ (function (_super) {
|
|
|
210
210
|
};
|
|
211
211
|
/**
|
|
212
212
|
* @inheritDoc
|
|
213
|
+
* @throws {IsAlreadyExistsException} when node already exists
|
|
213
214
|
*/
|
|
214
215
|
RandBinarySearchTree.prototype.insert = function (value) {
|
|
215
216
|
if (this.has(value)) {
|
|
@@ -232,4 +233,4 @@ var RandBinarySearchTree = /** @class */ (function (_super) {
|
|
|
232
233
|
return RandBinarySearchTree;
|
|
233
234
|
}(BinarySearchTree_1.default));
|
|
234
235
|
exports.default = RandBinarySearchTree;
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZEJpbmFyeVNlYXJjaFRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RhdGEtc3RydWN0dXJlcy9CaW5hcnlUcmVlL1JhbmRCaW5hcnlTZWFyY2hUcmVlL1JhbmRCaW5hcnlTZWFyY2hUcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtEQUEwRDtBQUMxRCx5RUFBb0U7QUFDcEUseUZBQW9GO0FBRXBGOztHQUVHO0FBQ0g7SUFBcUQsd0NBQW1CO0lBTXRFOztPQUVHO0lBQ0gsOEJBQW1CLFNBQTJCO1FBQTlDLFlBQ0Usa0JBQU0sU0FBUyxDQUFDLFNBRWpCO1FBREMsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7O0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNLLHlDQUFVLEdBQWxCLFVBQW1CLElBQTZCOztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLElBQUksS0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNkNBQWMsR0FBdEIsVUFDRSxJQUE2QixFQUM3QixVQUFpRDtRQUFqRCwyQkFBQSxFQUFBLGlCQUFpRDtRQUVqRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssOENBQWUsR0FBdkIsVUFBd0IsSUFBNkI7UUFDbkQsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLEtBQUssS0FB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
|
|
@@ -16,7 +16,7 @@ export default abstract class AbstractGraph<T> {
|
|
|
16
16
|
protected getVerticesArrayFormat(): Array<T>;
|
|
17
17
|
/**
|
|
18
18
|
* Find vertex in vertices list by its data
|
|
19
|
-
* @throws when vertex was not found
|
|
19
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
20
20
|
*/
|
|
21
21
|
protected tryFindVertex(data: T): T;
|
|
22
22
|
/**
|
|
@@ -49,12 +49,12 @@ export default abstract class AbstractGraph<T> {
|
|
|
49
49
|
edgesCount(): number;
|
|
50
50
|
/**
|
|
51
51
|
* Add vertex
|
|
52
|
-
* @throws when vertex is already exists
|
|
52
|
+
* @throws {IsAlreadyExistsException} when vertex is already exists
|
|
53
53
|
*/
|
|
54
54
|
addVertex(data: T): this;
|
|
55
55
|
/**
|
|
56
56
|
* Remove vertex
|
|
57
|
-
* @throws when vertex is already does not exist
|
|
57
|
+
* @throws {IsNotFoundException} when vertex is already does not exist
|
|
58
58
|
*/
|
|
59
59
|
removeVertex(data: T): this;
|
|
60
60
|
/**
|
|
@@ -18,7 +18,7 @@ var AbstractGraph = /** @class */ (function () {
|
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
20
|
* Find vertex in vertices list by its data
|
|
21
|
-
* @throws when vertex was not found
|
|
21
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
22
22
|
*/
|
|
23
23
|
AbstractGraph.prototype.tryFindVertex = function (data) {
|
|
24
24
|
var isExists = this._vertices.has(data);
|
|
@@ -82,7 +82,7 @@ var AbstractGraph = /** @class */ (function () {
|
|
|
82
82
|
};
|
|
83
83
|
/**
|
|
84
84
|
* Add vertex
|
|
85
|
-
* @throws when vertex is already exists
|
|
85
|
+
* @throws {IsAlreadyExistsException} when vertex is already exists
|
|
86
86
|
*/
|
|
87
87
|
AbstractGraph.prototype.addVertex = function (data) {
|
|
88
88
|
if (this.hasVertex(data)) {
|
|
@@ -93,7 +93,7 @@ var AbstractGraph = /** @class */ (function () {
|
|
|
93
93
|
};
|
|
94
94
|
/**
|
|
95
95
|
* Remove vertex
|
|
96
|
-
* @throws when vertex is already does not exist
|
|
96
|
+
* @throws {IsNotFoundException} when vertex is already does not exist
|
|
97
97
|
*/
|
|
98
98
|
AbstractGraph.prototype.removeVertex = function (data) {
|
|
99
99
|
try {
|
|
@@ -11,14 +11,17 @@ export default class DirectedGraph<T> extends AbstractGraph<T> {
|
|
|
11
11
|
constructor();
|
|
12
12
|
/**
|
|
13
13
|
* @inheritDoc
|
|
14
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
14
15
|
*/
|
|
15
16
|
protected getEdgeByValue(from: T, to: T): GraphEdge<T>;
|
|
16
17
|
/**
|
|
17
18
|
* @inheritDoc
|
|
19
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
18
20
|
*/
|
|
19
21
|
addEdge(from: T, to: T, weight?: number): this;
|
|
20
22
|
/**
|
|
21
23
|
* @inheritDoc
|
|
24
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
22
25
|
*/
|
|
23
26
|
removeEdge(from: T, to: T): this;
|
|
24
27
|
}
|
|
@@ -30,6 +30,7 @@ var DirectedGraph = /** @class */ (function (_super) {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* @inheritDoc
|
|
33
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
33
34
|
*/
|
|
34
35
|
DirectedGraph.prototype.getEdgeByValue = function (from, to) {
|
|
35
36
|
var edge = this._edges.find(function (edge) { return edge.fromVertex === from && edge.toVertex === to; });
|
|
@@ -40,6 +41,7 @@ var DirectedGraph = /** @class */ (function (_super) {
|
|
|
40
41
|
};
|
|
41
42
|
/**
|
|
42
43
|
* @inheritDoc
|
|
44
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
43
45
|
*/
|
|
44
46
|
DirectedGraph.prototype.addEdge = function (from, to, weight) {
|
|
45
47
|
var _a;
|
|
@@ -64,6 +66,7 @@ var DirectedGraph = /** @class */ (function (_super) {
|
|
|
64
66
|
};
|
|
65
67
|
/**
|
|
66
68
|
* @inheritDoc
|
|
69
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
67
70
|
*/
|
|
68
71
|
DirectedGraph.prototype.removeEdge = function (from, to) {
|
|
69
72
|
try {
|
|
@@ -83,4 +86,4 @@ var DirectedGraph = /** @class */ (function (_super) {
|
|
|
83
86
|
return DirectedGraph;
|
|
84
87
|
}(AbstractGraph_1.default));
|
|
85
88
|
exports.default = DirectedGraph;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlyZWN0ZWRHcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0dyYXBoL0RpcmVjdGVkR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTRDO0FBQzVDLHlDQUFvQztBQUNwQyw0RUFBdUU7QUFFdkU7OztHQUdHO0FBQ0g7SUFBOEMsaUNBQWdCO0lBQzVEOztPQUVHO0lBQ0g7ZUFDRSxpQkFBTztJQUNULENBQUM7SUFFRDs7O09BR0c7SUFDTyxzQ0FBYyxHQUF4QixVQUF5QixJQUFPLEVBQUUsRUFBSztRQUNyQyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsVUFBQyxJQUFrQixJQUFLLE9BQUEsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLEVBQWhELENBQWdELENBQ3pFLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLDZCQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDakQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSwrQkFBTyxHQUFkLFVBQWUsSUFBTyxFQUFFLEVBQUssRUFBRSxNQUFlOztRQUM1QyxJQUFJO1lBQ0YsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXhDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO29CQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDckQ7YUFDRjtpQkFBTTtnQkFDTCxJQUFNLElBQUksR0FBRyxJQUFJLG1CQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLDBDQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7YUFDaEQ7U0FDRjtRQUFDLFdBQU07WUFDTixNQUFNLElBQUksNkJBQW1CLENBQzNCLDREQUE0RCxDQUM3RCxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQ0FBVSxHQUFqQixVQUFrQixJQUFPLEVBQUUsRUFBSztRQUM5QixJQUFJO1lBQ0YsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFNLFVBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLElBQU0sY0FBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFVBQVEsQ0FBQyxDQUFDO1lBRS9ELElBQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pFLElBQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUNqRCxVQUFDLE1BQVMsSUFBSyxPQUFBLFVBQVEsS0FBSyxNQUFNLEVBQW5CLENBQW1CLENBQ25DLENBQUM7WUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUM5QixVQUFDLElBQWtCLElBQUssT0FBQSxJQUFJLEtBQUssY0FBWSxFQUFyQixDQUFxQixDQUM5QyxDQUFDO1NBQ0g7UUFBQyxXQUFNO1lBQ04sTUFBTSxJQUFJLDZCQUFtQixDQUMzQiw4REFBOEQsQ0FDL0QsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0gsb0JBQUM7QUFBRCxDQUFDLEFBL0VELENBQThDLHVCQUFhLEdBK0UxRCJ9
|
|
@@ -11,6 +11,7 @@ export default class UndirectedGraph<T> extends AbstractGraph<T> {
|
|
|
11
11
|
constructor();
|
|
12
12
|
/**
|
|
13
13
|
* @inheritDoc
|
|
14
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
14
15
|
*/
|
|
15
16
|
protected getEdgeByValue(from: T, to: T): GraphEdge<T>;
|
|
16
17
|
/**
|
|
@@ -19,10 +20,12 @@ export default class UndirectedGraph<T> extends AbstractGraph<T> {
|
|
|
19
20
|
hasEdge(from: T, to: T): boolean;
|
|
20
21
|
/**
|
|
21
22
|
* @inheritDoc
|
|
23
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
22
24
|
*/
|
|
23
25
|
addEdge(from: T, to: T, weight?: number): this;
|
|
24
26
|
/**
|
|
25
27
|
* @inheritDoc
|
|
28
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
26
29
|
*/
|
|
27
30
|
removeEdge(from: T, to: T): this;
|
|
28
31
|
}
|
|
@@ -30,6 +30,7 @@ var UndirectedGraph = /** @class */ (function (_super) {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* @inheritDoc
|
|
33
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
33
34
|
*/
|
|
34
35
|
UndirectedGraph.prototype.getEdgeByValue = function (from, to) {
|
|
35
36
|
var edge = this._edges.find(function (edge) {
|
|
@@ -52,6 +53,7 @@ var UndirectedGraph = /** @class */ (function (_super) {
|
|
|
52
53
|
};
|
|
53
54
|
/**
|
|
54
55
|
* @inheritDoc
|
|
56
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
55
57
|
*/
|
|
56
58
|
UndirectedGraph.prototype.addEdge = function (from, to, weight) {
|
|
57
59
|
var _a, _b;
|
|
@@ -78,6 +80,7 @@ var UndirectedGraph = /** @class */ (function (_super) {
|
|
|
78
80
|
};
|
|
79
81
|
/**
|
|
80
82
|
* @inheritDoc
|
|
83
|
+
* @throws {IsNotFoundException} when vertex was not found
|
|
81
84
|
*/
|
|
82
85
|
UndirectedGraph.prototype.removeEdge = function (from, to) {
|
|
83
86
|
try {
|
|
@@ -100,4 +103,4 @@ var UndirectedGraph = /** @class */ (function (_super) {
|
|
|
100
103
|
return UndirectedGraph;
|
|
101
104
|
}(AbstractGraph_1.default));
|
|
102
105
|
exports.default = UndirectedGraph;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5kaXJlY3RlZEdyYXBoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvR3JhcGgvVW5kaXJlY3RlZEdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1Qyx5Q0FBb0M7QUFDcEMsNEVBQXVFO0FBRXZFOzs7R0FHRztBQUNIO0lBQWdELG1DQUFnQjtJQUM5RDs7T0FFRztJQUNIO2VBQ0UsaUJBQU87SUFDVCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sd0NBQWMsR0FBeEIsVUFBeUIsSUFBTyxFQUFFLEVBQUs7UUFDckMsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNCLFVBQUMsSUFBa0I7WUFDakIsT0FBQSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDO2dCQUNsRCxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1FBRGxELENBQ2tELENBQ3JELENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLDZCQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDakQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLGlDQUFPLEdBQWQsVUFBZSxJQUFPLEVBQUUsRUFBSztRQUMzQixPQUFPLE9BQU8sQ0FDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFDLElBQUk7WUFDcEIsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUM7Z0JBQ2xELENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLElBQUksSUFB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
|