You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
483 B
26 lines
483 B
export default function visit(vertex, fn, visited, path) {
|
|
var name = vertex.name;
|
|
var vertices = vertex.incoming;
|
|
var names = vertex.incomingNames;
|
|
var len = names.length;
|
|
var i;
|
|
|
|
if (!visited) {
|
|
visited = {};
|
|
}
|
|
if (!path) {
|
|
path = [];
|
|
}
|
|
if (visited.hasOwnProperty(name)) {
|
|
return;
|
|
}
|
|
path.push(name);
|
|
visited[name] = true;
|
|
for (i = 0; i < len; i++) {
|
|
visit(vertices[names[i]], fn, visited, path);
|
|
}
|
|
fn(vertex, path);
|
|
path.pop();
|
|
}
|
|
|