visitDepth method

  1. @override
void visitDepth(
  1. VisitCallback visit, {
  2. Node? startNode,
})
override

Depth-first search (DFS)

Implementation

@override
void visitDepth(VisitCallback visit, {Node? startNode}) {
  final visited = <Node, bool>{};
  final stack = <Node>[];
  stack.add(startNode ?? root);

  while (stack.isNotEmpty) {
    final node = stack.removeLast();

    if (visited[node] != true) {
      visited[node] = true;
      final visitResult = visit(node);
      if (visitResult == VisitResult.breakVisit) {
        break;
      }

      for (final child in _edges[node] ?? {}) {
        if (visited[child] != true) {
          stack.add(child);
        }
      }
    }
  }
}