Add Eulerian Path.

This commit is contained in:
Oleksii Trekhleb
2018-05-12 07:54:14 +03:00
parent 808a1e713f
commit e5a0b4ba0d
7 changed files with 258 additions and 18 deletions

View File

@@ -21,7 +21,7 @@ describe('graphBridges', () => {
.addEdge(edgeBC)
.addEdge(edgeCD);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(3);
expect(bridges[0].getKey()).toBe(edgeCD.getKey());
@@ -48,7 +48,7 @@ describe('graphBridges', () => {
.addEdge(edgeBC)
.addEdge(edgeCD);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(1);
expect(bridges[0].getKey()).toBe(edgeCD.getKey());
@@ -87,7 +87,7 @@ describe('graphBridges', () => {
.addEdge(edgeGF)
.addEdge(edgeFH);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(3);
expect(bridges[0].getKey()).toBe(edgeFH.getKey());
@@ -128,7 +128,7 @@ describe('graphBridges', () => {
.addEdge(edgeGF)
.addEdge(edgeFH);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(3);
expect(bridges[0].getKey()).toBe(edgeFH.getKey());
@@ -158,7 +158,7 @@ describe('graphBridges', () => {
.addEdge(edgeCD)
.addEdge(edgeDE);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(2);
expect(bridges[0].getKey()).toBe(edgeDE.getKey());
@@ -195,7 +195,7 @@ describe('graphBridges', () => {
.addEdge(edgeEG)
.addEdge(edgeFG);
const bridges = graphBridges(graph);
const bridges = Object.values(graphBridges(graph));
expect(bridges.length).toBe(1);
expect(bridges[0].getKey()).toBe(edgeCD.getKey());

View File

@@ -12,7 +12,7 @@ class VisitMetadata {
/**
* @param {Graph} graph
* @return {GraphVertex[]}
* @return {Object}
*/
export default function graphBridges(graph) {
// Set of vertices we've already visited during DFS.
@@ -91,5 +91,5 @@ export default function graphBridges(graph) {
// Do Depth First Search traversal over submitted graph.
depthFirstSearch(graph, startVertex, dfsCallbacks);
return Object.values(bridges);
return bridges;
}