depthFirst<T> function
Graphs
- WalkableBase<
T> graph, { - required T start,
- Tracer<
T> ? tracer,
Visits nodes in a graph
structure, deepest nodes first, from start
.
Depth-first traversal is an algorithm for traversing or searching tree
or graph data structures. It starts at the tree root (or some arbitrary node
of a graph, i.e., the start
node), and explores as far as possible along
each branch before backtracking.
A depth-first traversal is typically used for:
- Wander deep into the graph before exploring closer nodes;
- In cases where deep branches or cycles are less likely to be found;
Depth-first traversals typically have lower memory overhead than other
algorithms (O(d)
, where d
is the depth of the deepest node); consider
using breadthFirst when a shallower traversal is needed.
Example
final graph = Graph<int>();
graph.addEdge(Edge(1, 2));
graph.addEdge(Edge(2, 3));
final reachable = depthFirst(graph, start: 1);
print(reachable); // (1, 3, 2)
Implementation
Iterable<T> depthFirst<T>(
WalkableBase<T> graph, {
required T start,
Tracer<T>? tracer,
}) {
return _DfsReachable(graph.asUnweighted(), tracer, start);
}