"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const forEach = require("../lodash-es/forEach.cjs");
const isArray = require("../lodash-es/isArray.cjs");
function dfs(g, vs, order) {
  if (!isArray.default(vs)) {
    vs = [vs];
  }
  var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);
  var acc = [];
  var visited = {};
  forEach.default(vs, function(v) {
    if (!g.hasNode(v)) {
      throw new Error("Graph does not have node: " + v);
    }
    doDfs(g, v, order === "post", visited, navigation, acc);
  });
  return acc;
}
function doDfs(g, v, postorder, visited, navigation, acc) {
  if (!Object.prototype.hasOwnProperty.call(visited, v)) {
    visited[v] = true;
    if (!postorder) {
      acc.push(v);
    }
    forEach.default(navigation(v), function(w) {
      doDfs(g, w, postorder, visited, navigation, acc);
    });
    if (postorder) {
      acc.push(v);
    }
  }
}
exports.dfs = dfs;
//# sourceMappingURL=src-graphlib-alg-dfs.cjs.map
