1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
//![includes]
#include <iostream>
#include <seqan/index.h>
using namespace seqan2;
//![includes]
//![iteration]
template <typename TIndexSpec>
void constrainedDFS()
{
typedef Index<CharString, TIndexSpec> TIndex;
TIndex index("mississippi");
typename Iterator<TIndex, TopDown<ParentLinks<> > >::Type it(index);
do
{
std::cout << representative(it) << std::endl;
if (!goDown(it) || repLength(it) > 3)
do
{
if (!goRight(it))
while (goUp(it) && !goRight(it))
;
}
while (repLength(it) > 3);
}
while (!isRoot(it));
std::cout << std::endl;
}
int main()
{
constrainedDFS<IndexEsa<> >();
constrainedDFS<IndexWotd<> >();
return 0;
}
//![iteration]
|