bfs method

void bfs(
  1. SplitSolverNode root,
  2. void visitFunc(
    1. SplitSolverNode node,
    2. List<Body?> bds,
    3. List<Equation> eqs
    ),
  3. List<Body?> bds,
  4. List<Equation> eqs,
)

Implementation

void bfs(
  SplitSolverNode root,
  void Function(SplitSolverNode node, List<Body?> bds, List<Equation> eqs) visitFunc,
  List<Body?> bds,
  List<Equation> eqs
) {
  queue.add(root);
  root.visited = true;
  visitFunc(root, bds, eqs);
  while (queue.isNotEmpty) {
    final node = queue.removeLast();
    while(true) {
      SplitSolverNode? child = getUnvisitedNode(node.children);
      if(child == null) break;
      child.visited = true;
      visitFunc(child, bds, eqs);
      queue.add(child);
    }
  }
}