Skip to content

Instantly share code, notes, and snippets.

@maxdeliso
Created November 2, 2015 04:47
Show Gist options
  • Save maxdeliso/cbc0180ba56423bd6d32 to your computer and use it in GitHub Desktop.
Save maxdeliso/cbc0180ba56423bd6d32 to your computer and use it in GitHub Desktop.
simple_graph.rb
class Graph
def initialize
@edges = {}
end
def addEdge(src, dst)
@edges[src] ? (@edges[src] << dst) : (@edges[src] = [dst])
@edges[dst] ? (@edges[dst] << src) : (@edges[dst] = [src])
@edges.each {|k, v| v.uniq!}
end
def bfs(src)
return [] unless @edges[src]
seen = {}
res = []
stack = []
stack.push(src)
while !stack.empty?
node = stack.pop
if !seen[node]
seen[node] = true
res << node
@edges[node].each do |adj_node|
stack.push(adj_node)
end
end
end # while
res
end # bfs
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment