如何找到可能的路径(遍历)



如何找到从下面的可能穿越的路径。

var pathObject = {
                A :["B"],
                B :["C", "D"],
                D :["E"],
                C :["F", "E"],
                E :["G"],
                F :["G"],
                G :["H"],
                H :[]                
            }

预期输出为:

[
   ["A", "B", "C", "F", "G", "H"],
   ["A", "B", "D", "E", "G", "H"],
   ["A", "B", "C", "E", "G", "H"]
];

如何实现这一目标..我尝试使用循环时使用,但找不到确切的逻辑。

递归对此很有用。

var pathObject = {
                A :["B"],
                B :["C", "D"],
                D :["E"],
                C :["F", "E"],
                E :["G"],
                F :["G"],
                G :["H"],
                H :[]                
            }
var paths = []
function findPath(data, currentPath, currentPoint) {
    currentPath.push(currentPoint);
    if(data[currentPoint].length == 0) {
        paths.push(currentPath)
    } else {
        data[currentPoint].map(nextPoint => {
            findPath(data, currentPath.slice(0), nextPoint)
        })
    }
}
findPath(pathObject, [], "A");
console.log(paths)

最新更新