@Beta @GwtCompatible public abstract class TreeTraverser<T> extends Object
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());
 | Constructor and Description | 
|---|
TreeTraverser()  | 
| Modifier and Type | Method and Description | 
|---|---|
FluentIterable<T> | 
breadthFirstTraversal(T root)
Returns an unmodifiable iterable over the nodes in a tree structure, using breadth-first
 traversal. 
 | 
abstract Iterable<T> | 
children(T root)
Returns the children of the specified node. 
 | 
FluentIterable<T> | 
postOrderTraversal(T root)
Returns an unmodifiable iterable over the nodes in a tree structure, using post-order
 traversal. 
 | 
FluentIterable<T> | 
preOrderTraversal(T root)
Returns an unmodifiable iterable over the nodes in a tree structure, using pre-order
 traversal. 
 | 
static <T> TreeTraverser<T> | 
using(Function<T,? extends Iterable<T>> nodeToChildrenFunction)
Returns a tree traverser that uses the given function to navigate from a node to its children. 
 | 
public TreeTraverser()
public static <T> TreeTraverser<T> using(Function<T,? extends Iterable<T>> nodeToChildrenFunction)
TreeTraverser and implement its children(T) method directly.public abstract Iterable<T> children(T root)
public final FluentIterable<T> preOrderTraversal(T root)
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.
public final FluentIterable<T> postOrderTraversal(T root)
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.
public final FluentIterable<T> breadthFirstTraversal(T root)
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.
Copyright © 2010–2017. All rights reserved.