function | since v0.0-927 | clojure.core/tree-seq | Edit |
(tree-seq branch? children root)
Returns a lazy sequence of the nodes in a tree, via a depth-first walk.
branch?
must be a function of one argument that returns true if passed a node
that can have children (but may not).
children
must be a function of one argument that returns a sequence of the
children. children
will only be called on nodes for which branch?
returns
true.
root
is the root node of the tree.
Returns a lazy sequence of the nodes in a tree, via a depth-first walk. branch? must be a fn of one arg that returns true if passed a node that can have children (but may not). children must be a fn of one arg that returns a sequence of the children. Will only be called on nodes for which branch? returns true. Root is the root node of the tree.
(defn tree-seq
[branch? children root]
(let [walk (fn walk [node]
(lazy-seq
(cons node
(when (branch? node)
(mapcat walk (children node))))))]
(walk root)))