class MiniGraph::Core::Search::BFS


Breadth-First Search


Public Instance Methods

visit(index, visited=Array.new(graph.size, false)) { |next_index| ... } click to toggle source
# File lib/mini_graph/core/search.rb, line 52
def visit(index, visited=Array.new(graph.size, false), &block)
  queue           = []
  visited[index]  = true

  queue.push(index)

  while !queue.empty?
    next_index = queue.shift
    yield next_index

    graph.adjacent_vertices(next_index).each do |vi|
      unless visited[vi]
        visited[vi] = true
        queue.push(vi)
      end
    end
  end
end