剑指 Offer II 110. 所有路径

132 阅读1分钟

剑指 Offer II 110. 所有路径

给定一个有 n 个节点的有向无环图,用二维数组 graph 表示,请找到所有从 0 到 n-1 的路径并输出(不要求按顺序)。

graph 的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a ),若为空,就是没有下一个节点了。

image.png

输入:graph = [[4,3,1],[3,2,4],[3],[4],[]]
输出:[[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]
解释:0号位,可以指向4,3,1  
1号位,可以指向3,2,4 .....
var allPathsSourceTarget = function (brr) {
  var arr = [];
  var res = [];
  arr.push(0);
  f(brr, 0, brr.length - 1);
  return res;
  function f(brr, i, n) {
    if (i === n) {
      res.push(arr.slice());
      return;
    }
    for (var j of brr[i]) {
      arr.push(j);
      f(brr, j, n);
      arr.pop();
    }
  }
};

代码调试

console.log(allPathsSourceTarget([[4, 3, 1], [3, 2, 4], [3], [4], []]));

未命名文件 (10).jpg