123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 'use strict'
- function UndirectedGraphNode(label) {
- this.label = label
- this.neighbors = []
- }
- var cloneGraph = function (graph) {
- if (graph == null) return null
- const map = new Map()
- return clone(graph, map)
- }
- function clone(node, map) {
- if (node === null) return null
- if (map.get(node.label) !== undefined)
- return map.get(node.label)
- const copy = new UndirectedGraphNode(node.label)
- map.set(copy.label, copy)
- for (const n of node.neighbors) {
- copy.neighbors.push(clone(n, map))
- }
- return copy
- }
- function __main__() {
-
- const logger = console.log.bind(console)
- const n3 = new UndirectedGraphNode(3)
- const n2 = new UndirectedGraphNode(2)
- const n1 = new UndirectedGraphNode(1)
- n3.neighbors = [n2, n3]
- n2.neighbors = [n1, n3]
- n1.neighbors = [n2, n3]
- const n = cloneGraph(n1)
- logger(n)
- }
- __main__()
|