Class TreeIteration


  • public final class TreeIteration
    extends Object
    An iterable that iterates over a tree-like graph in pre-order, starting at a given node. Throws an exception in case the graph is not a tree, thus also preventing endless cycles when the graph is cyclic.

    Assume the following tree:

    • a
      • a1
      • a2
        • a21
        • a22
    • b
      • b1
      • b2
    Then a pre-order traversal traverses the nodes in the following order:
    • a
    • a1
    • a2
    • a21
    • a22
    • b
    • b1
    • b2
    Since:
    8.4.0
    Author:
    XIMA MEDIA GmbH
    • Method Detail

      • preOrderIterable

        public static <TItem,​TIdentifier> Iterable<TItem> preOrderIterable​(TItem startNode,
                                                                                 ITreeAccessor<TItem,​TIdentifier> treeAccessor)
        Creates an iterable over the tree's nodes in pre-order, starting at the given item.
        Type Parameters:
        TItem - Type of the items in the tree.
        TIdentifier - Type of the identifier that identifiers the items in the tree.
        Parameters:
        startNode - Node where to start the traversal. This item is included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier.
      • preOrderIterable

        public static <TItem,​TIdentifier> Iterable<TItem> preOrderIterable​(TItem startNode,
                                                                                 ITreeAccessor<TItem,​TIdentifier> treeAccessor,
                                                                                 long flags)
        Creates an iterable over the tree's nodes in pre-order, starting at the given item.
        Type Parameters:
        TItem - Type of the items in the tree.
        TIdentifier - Type of the identifier that identifiers the items in the tree.
        Parameters:
        startNode - Node where to start the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier.
        flags - Flags that affect the iteration, see TreeIterationFlag for details.
      • preOrderIterable

        public static <TItem,​TIdentifier> Iterable<TItem> preOrderIterable​(Iterable<? extends TItem> startItems,
                                                                                 ITreeAccessor<TItem,​TIdentifier> treeAccessor)
        Creates an iterable over the tree's nodes in pre-order, starting at the given items.
        Parameters:
        startItems - Root items where to start the traversal. These items are included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier.
      • preOrderIterable

        public static <TItem,​TIdentifier> Iterable<TItem> preOrderIterable​(Iterable<? extends TItem> startItems,
                                                                                 ITreeAccessor<TItem,​TIdentifier> treeAccessor,
                                                                                 long flags)
        Creates an iterable over the tree's nodes in pre-order, starting at the given items.
        Parameters:
        startItems - Root items where to start the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier.
        flags - Flags that affect the iteration, see TreeIterationFlag for details.