Мой метод и функция делают то же самое, но работает только функция? - PullRequest
0 голосов
/ 12 июля 2020

Функция и метод 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')

1 Ответ

0 голосов
/ 13 июля 2020

Похоже, проблема связана с осциллографом. Вспомогательной функции не удалось получить доступ к this.adjacencyList. Чтобы исправить это, вы можете сделать let parent = this перед вспомогательной функцией, а затем использовать parent.adjacencyList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...