mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-07-07 01:44:52 +08:00
Add degree property to GraphVertex.
This commit is contained in:
@ -31,8 +31,9 @@ export default class GraphVertex {
|
|||||||
getNeighbors() {
|
getNeighbors() {
|
||||||
const edges = this.edges.toArray();
|
const edges = this.edges.toArray();
|
||||||
|
|
||||||
const neighborsConverter = ({ value }) => {
|
/** @param {LinkedListNode} node */
|
||||||
return value.startVertex === this ? value.endVertex : value.startVertex;
|
const neighborsConverter = (node) => {
|
||||||
|
return node.value.startVertex === this ? node.value.endVertex : node.value.startVertex;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Return either start or end vertex.
|
// Return either start or end vertex.
|
||||||
@ -47,6 +48,13 @@ export default class GraphVertex {
|
|||||||
return this.edges.toArray().map(linkedListNode => linkedListNode.value);
|
return this.edges.toArray().map(linkedListNode => linkedListNode.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {number}
|
||||||
|
*/
|
||||||
|
getDegree() {
|
||||||
|
return this.edges.toArray().length;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {GraphEdge} requiredEdge
|
* @param {GraphEdge} requiredEdge
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
|
@ -100,4 +100,26 @@ describe('GraphVertex', () => {
|
|||||||
expect(vertexA.findEdge(vertexB)).toEqual(edgeAB);
|
expect(vertexA.findEdge(vertexB)).toEqual(edgeAB);
|
||||||
expect(vertexA.findEdge(vertexC)).toBeNull();
|
expect(vertexA.findEdge(vertexC)).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should calculate vertex degree', () => {
|
||||||
|
const vertexA = new GraphVertex('A');
|
||||||
|
const vertexB = new GraphVertex('B');
|
||||||
|
|
||||||
|
expect(vertexA.getDegree()).toBe(0);
|
||||||
|
|
||||||
|
const edgeAB = new GraphEdge(vertexA, vertexB);
|
||||||
|
vertexA.addEdge(edgeAB);
|
||||||
|
|
||||||
|
expect(vertexA.getDegree()).toBe(1);
|
||||||
|
|
||||||
|
const edgeBA = new GraphEdge(vertexB, vertexA);
|
||||||
|
vertexA.addEdge(edgeBA);
|
||||||
|
|
||||||
|
expect(vertexA.getDegree()).toBe(2);
|
||||||
|
|
||||||
|
vertexA.addEdge(edgeAB);
|
||||||
|
expect(vertexA.getDegree()).toBe(3);
|
||||||
|
|
||||||
|
expect(vertexA.getEdges().length).toEqual(3);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user