Функция и метод DPS делают то же самое: они берут вершину (и график для функции DPS), выполняют поиск в глубину и возвращают все узлы в графе. Всякий раз, когда я вызываю дерево методов.DPS (), я получаю сообщение об ошибке
VM1267 graphs:37 Uncaught TypeError: Cannot read property 'adjacencyList' of undefined
Это строка 37
let l = this.adjacencyList[0];
Но когда Запускаю функцию DPS () все работает нормально. Кто-нибудь может понять, почему? adjacencyList - это атрибут графа, который содержит вершины в качестве ключей и значение в виде соответствующих ребер вершин в виде списка.
DPS(vertex) {
visited = []
helper(vertex)
function helper(vertex) {
visited.push(vertex)
let l = this.adjacencyList[0];
console.log(l)
return l
for (let i =0; i < l.length; i++ ) {
if (!visited.includes(l[i])) {
helper(l[i])
}
}
}
return visited
}
}
g = new Graph
g.addVertex('Tokyo')
g.addVertex('NYC')
g.addVertex('San Francisco')
g.addEdge('NYC','Tokyo')
g.addEdge('San Francisco','Tokyo')
g.addEdge('NYC','San Francisco')
function DPS(graph,vertex) {
visited = []
helper(vertex)
function helper(vertex) {
visited.push(vertex)
let l = graph.adjacencyList[vertex];
for (let i =0; i < l.length; i++ ) {
if (!visited.includes(l[i])) {
helper(l[i])
}
}
}
return visited
}
//DPS(g,'NYC') This works
g.DPS('NYC')