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.

Source docstring:

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.

Source code @ clojurescript:src/main/cljs/cljs/core.cljs

```
(defn tree-seq
[branch? children root]
(let [walk (fn walk [node]
(lazy-seq
(cons node
(when (branch? node)
(mapcat walk (children node))))))]
(walk root)))
```