# Spec Bottom Up Iterator
Iterator for an efficient postorder depth-first search in a virtual string tree.

Extends | VSTreeIterator
Implements | ForwardIteratorConcept
All Extended | Iter, VSTreeIterator
All Subcl's | MaxRepeatsIterator, MultiMemsIterator, MumsIterator, SuperMaxRepeatsFastIterator, SuperMaxRepeatsIterator
All Impl'd | CopyConstructibleConcept, DefaultConstructibleConcept, EqualityComparableConcept, ForwardIteratorConcept, InputIteratorConcept, IteratorAssociatedTypesConcept
Defined in | <seqan/index.h>
Signature | `template <typename TIndex, typename TSpec> class Iter<TContainer, VSTree< BottomUp<TSpec> > >;`

## Template Parameters

`TSpec` | The specialization type.
`TIndex` | Type of the container that can be iterated.

## Member Function Overview

- `Iter::Iter(index);, Iter::Iter(iterator);`
  Constructor

### Member Functions Inherited From Iter

- `Iter`

### Member Functions Inherited From EqualityComparableConcept

- `operator!=`
- `operator==`

## Interface Function Overview

- `void goBegin(iterator);`
  Iterates to the first position of a container.

### Interface Functions Inherited From VSTreeIterator

- `alignment`
- `assignProperty`
- `atEnd`
- `childrenAreLeaves`
- `countChildren`
- `countOccurrences`
- `getFrequency`
- `getOccurrence`
- `getOccurrences`
- `getOccurrencesBwt`
- `getProperty`
- `goBegin`
- `goNext`
- `goRoot`
- `isLeaf`
- `isLeftMaximal`
- `isPartiallyLeftExtensible`
- `isRightTerminal`
- `isRoot`
- `isUnique`
- `nodeHullPredicate`
- `nodePredicate`
- `property`
- `range`
- `repLength`
- `representative`
- `value`

### Interface Functions Inherited From InputIteratorConcept

- `operator++(suffix)`
- `operator++(prefix)`
- `operator->`
- `goNext`

### Interface Functions Inherited From IteratorAssociatedTypesConcept

- `operator*`
- `value`
- `getValue`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Iter

- `Container`
- `IterComplementConst`
- `IterMakeConst`
- `Spec`

### Interface Metafunctions Inherited From VSTreeIterator

- `EdgeLabel`

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

- `Difference`
- `GetValue`
- `Pointer`
- `Reference`
- `Value`

## Detailed Description

Note:

Instead of using the class Iter directly we recommend to use the result of the metafunction Iterator<TContainer, BottomUp<TSpec> >::Type (which is Iter<TContainer, VSTree<BottomUp<TSpec> > >).

## Member Functions Detail

### `Iter::Iter(index); Iter::Iter(iterator);`

Constructor

#### Parameters

`index` | An index object.
`iterator` | A Bottom Up Iterator.

If not copy-constructed the BottomUpIterator starts in the first DFS node, which is the left-most leaf of the virtual string tree.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

## Interface Functions Detail

### `void goBegin(iterator);`

Iterates to the first position of a container.

#### Parameters

`iterator` | Object that iterates through.

This function is equivalent to `iterator = begin(container)`.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### See Also

- begin

#### Dox Sources

    /*!
     * @class BottomUpIterator Bottom Up Iterator
     *
     * @implements ForwardIteratorConcept
     *
     * @extends VSTreeIterator
     *
     * @headerfile <seqan/index.h>
     *
     * @brief Iterator for an efficient postorder depth-first search in a virtual
     *        string tree.
     *
     * @note Instead of using the class Iter directly we recommend to use the result
     *       of the metafunction Iterator&lt;TContainer, BottomUp&lt;TSpec&gt;
     *       &gt;::Type (which is Iter&lt;TContainer,
     *       VSTree&lt;BottomUp&lt;TSpec&gt; &gt; &gt;).
     *
     * @signature template <typename TIndex, typename TSpec> class Iter<TContainer,
     *            VSTree< BottomUp<TSpec> > >;
     *
     * @tparam TSpec The specialization type.
     * @tparam TIndex Type of the container that can be iterated.
     *
     * @fn BottomUpIterator::Iter
     *
     * @brief Constructor
     *
     * @signature Iter::Iter(index);
     * @signature Iter::Iter(iterator);
     *
     * @param[in] index An index object.
     * @param[in] iterator A Bottom Up Iterator.
     *
     * If not copy-constructed the @link BottomUpIterator @endlink starts in the
     * first DFS node, which is the left-most leaf of the virtual string tree.
     *
     * @fn BottomUpIterator#goBegin
     *
     * @headerfile <seqan/index.h>
     *
     * @brief Iterates to the first position of a container.
     *
     * @signature void goBegin(iterator);
     *
     * @param[in,out] iterator Object that iterates through.
     *
     * This function is equivalent to <tt>iterator = begin(container)</tt>.
     *
     * @see StringTreeConcept#begin
     */