我在获取图中的所有路线时遇到了一些麻烦。它适用于某些情况,但显然有些问题,因为它无法获得从A到E的所有路线。
let graph = {
'A': ['B', 'D', 'E'],
'B': ['C'],
'C': ['D', 'E'],
'D': ['C', 'E'],
'E': ['B']
};
function search(start, end, graph) {
let queue = [...graph[start]];
let visited = [];
while (queue.length) {
count = 1;
let node = queue.shift();
if (graph[node]){
let answer = recursiveStep(node, end, graph, str = node, visit = new Set(), nodes = []);
if (answer){
visited.push(answer);
}
}
}
return visited;
}
function recursiveStep(start, end, graph, str, visit, nodes) {
if (end === start) {
if (str.length <= 3 && !visit.has(str)) {
visit.add(str)
return str};
}
if (str.length > 3) return str = "";
nodes.push(...graph[start])
while (nodes.length) {
start = nodes.shift();
str += start
return recursiveStep(start, end, graph, str, visit, nodes)
}
return visit
}
console.log(search('A', 'E', graph));
输出为['DCE','E'],但是由于我需要所有小于或等于3的路由,因此应为:['E','DCE','BCE']。如果您想使用node复制和粘贴代码,则该代码有效。也许有一个错误,不是太确定,但是我也尝试过反复进行,但是几天之后,我被卡住了。非常感谢您的帮助。