From 80fc69ef41152761a4ec589b656befc54e562439 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 6 Jan 2021 17:10:09 -0300 Subject: [PATCH] Added Node Neighbors --- Graphs/NodeNeighbors.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Graphs/NodeNeighbors.js diff --git a/Graphs/NodeNeighbors.js b/Graphs/NodeNeighbors.js new file mode 100644 index 000000000..cd160c6d2 --- /dev/null +++ b/Graphs/NodeNeighbors.js @@ -0,0 +1,39 @@ +class Graph{ + // Generic graph: the algorithm works regardless of direction or weight + constructor(){ + this.edges = [] + } + + addEdge(node1, node2){ + // Adding edges to the graph + this.edges.push({ + node1, + node2 + }) + } + + nodeNeighbors(node){ + // Returns an array with all of the node neighbors + let neighbors = [] + for (let i = 0; i < this.edges.length; i++) { + // Checks if they have an edge between them and if the neighbor is not + // already in the neighbors array + if (this.edges[i].node1 === node && !(neighbors.includes(this.edges[i].node2))) { + neighbors.push(this.edges[i].node2) + } + else if (this.edges[i].node2 === node && !(neighbors.includes(this.edges[i].node1))) { + neighbors.push(this.edges[i].node1) + } + } + return neighbors + } +} + +(() => { + let graph = new Graph() + graph.addEdge(1, 2) + graph.addEdge(2, 3) + graph.addEdge(3, 5) + graph.addEdge(1, 5) + console.log(graph.nodeNeighbors(1)) +})()