Skip to content

Instantly share code, notes, and snippets.

@gdevanla
Created February 2, 2014 00:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdevanla/8761537 to your computer and use it in GitHub Desktop.
Save gdevanla/8761537 to your computer and use it in GitHub Desktop.
;;visit all nodes using reduce
;;clojure
;;store nodes in visited order.
(defn visit [g]
(let [walk (fn walk [g seen n]
(reduce (fn [seen, m]
(cond
(seen m) seen
:else (walk g (conj seen m) m) )) seen (g n))
)]
(walk g (sorted-set :u1) :u1)))
;;example
(visit {:u1 [:u2 :u3], :u2 [:u4], :u3 [:u4 :u6], :u4 [:u5], :u6 [:u5 :u7]})
;;#{:u1 :u2 :u3 :u4 :u5 :u6 :u7}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment