568{
570 auto y = std::get<0>(clType);
571 auto f = std::get<1>(clType);
572 auto pre = std::get<2>(clType);
573
575 else if (f == nullptr)
576 {
577 auto leaves = std::vector<SuffixTreeNode*> {};
579 for (auto g : leaves)
580 {
581 output.push_back(std::make_pair(g->getPatternNumber(),
mMonomials[g->getPatternNumber()].size() - g->label().size() + 1));
582 if (onlyFirst) return true;
583 }
584 }
585 else if (f->isLeaf() && f->label().size() == w.
size() + 1)
586 {
587 output.push_back(std::make_pair(f->getPatternNumber(),
mMonomials[f->getPatternNumber()].size() - f->label().size() + 1));
588 return true;
589 }
590 return false;
591}
bool concatenatesTo(const Word a, const Word b, const Word c)
auto contractedLocus(SuffixTreeNode *y, const Word &s, bool incrementLeafCount=false) const -> ContractedLocusType
std::vector< Label > mMonomials
auto allLeaves(SuffixTreeNode *v, std::vector< SuffixTreeNode * > &output) const -> void