Class TreeTraverser<T>
- Direct Known Subclasses:
BinaryTreeTraverser
T
as nodes in a tree, and provides methods to traverse the trees
induced by this traverser.
For example, the tree
h
/ | \
/ e \
d g
/|\ |
/ | \ f
a b c
can be iterated over in preorder (hdabcegf), postorder (abcdefgh), or breadth-first order (hdegabcf).
Null nodes are strictly forbidden.
For Java 8 users: Because this is an abstract class, not an interface, you can't use a lambda expression to extend it:
// won't work
TreeTraverser<NodeType> traverser = node -> node.getChildNodes();
Instead, you can pass a lambda expression to the using
factory method:
TreeTraverser<NodeType> traverser = TreeTraverser.using(node -> node.getChildNodes());
- Since:
- 15.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal FluentIterable
<T> breadthFirstTraversal
(T root) Returns an unmodifiable iterable over the nodes in a tree structure, using breadth-first traversal.Returns the children of the specified node.final FluentIterable
<T> postOrderTraversal
(T root) Returns an unmodifiable iterable over the nodes in a tree structure, using post-order traversal.final FluentIterable
<T> preOrderTraversal
(T root) Returns an unmodifiable iterable over the nodes in a tree structure, using pre-order traversal.static <T> TreeTraverser
<T> Returns a tree traverser that uses the given function to navigate from a node to its children.
-
Constructor Details
-
TreeTraverser
public TreeTraverser()
-
-
Method Details
-
using
Returns a tree traverser that uses the given function to navigate from a node to its children. This is useful if the function instance already exists, or so that you can supply a lambda expressions. If those circumstances don't apply, you probably don't need to use this; subclassTreeTraverser
and implement itschildren(T)
method directly.- Since:
- 20.0
-
children
Returns the children of the specified node. Must not contain null. -
preOrderTraversal
Returns an unmodifiable iterable over the nodes in a tree structure, using pre-order traversal. That is, each node's subtrees are traversed after the node itself is returned.No guarantees are made about the behavior of the traversal when nodes change while iteration is in progress or when the iterators generated by
children(T)
are advanced. -
postOrderTraversal
Returns an unmodifiable iterable over the nodes in a tree structure, using post-order traversal. That is, each node's subtrees are traversed before the node itself is returned.No guarantees are made about the behavior of the traversal when nodes change while iteration is in progress or when the iterators generated by
children(T)
are advanced. -
breadthFirstTraversal
Returns an unmodifiable iterable over the nodes in a tree structure, using breadth-first traversal. That is, all the nodes of depth 0 are returned, then depth 1, then 2, and so on.No guarantees are made about the behavior of the traversal when nodes change while iteration is in progress or when the iterators generated by
children(T)
are advanced.
-