class PatchworkInternal::Traversals
Public Class Methods
depth_first(start_node, &block)
click to toggle source
# File lib/patchwork/traversals.rb, line 3 def self.depth_first(start_node, &block) visited_nodes_cache = {} nodes_to_visit = [start_node] until nodes_to_visit.empty? next_node = nodes_to_visit.pop next if visited_nodes_cache[next_node.id] visited_nodes_cache[next_node.id] = true next_node.visit(&block) nodes_to_visit.concat(next_node.linked_nodes) end end