Method: NetworkX::Graph#each_dfs_edge
- Defined in:
- lib/networkx/traversals/edge_dfs.rb
#each_dfs_edge(node) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/networkx/traversals/edge_dfs.rb', line 93 def each_dfs_edge(node) return enum_for(:each_dfs_edge, node) unless block_given? st = [node] used = {} parents = {} while st[-1] node = st.pop yield(parents[node], node) if parents[node] used[node] = true @adj[node].reverse_each do |v, _data| next if used[v] parents[v] = node st << v unless used[v] end end end |