Method: NetworkX::Graph#each_bfs_node

Defined in:
lib/networkx/traversals/bfs.rb

#each_bfs_node(root) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/networkx/traversals/bfs.rb', line 64

def each_bfs_node(root)
  return enum_for(:each_bfs_node, root) unless block_given?

  queue = [root]
  dist = {root => 0}
  while (v = queue.shift)
    yield v
    d = dist[v]
    @adj[v].each do |u, _data|
      next if dist[u]

      dist[u] = d + 1
      queue << u
    end
  end
end