int Linearizator::FindMinString(SuffixTree* tree, int inputStringLength) { int checkedLength = 0; int lastIndex = inputStringLength + inputStringLength; Vertex* root = tree->GetRoot(); Arch* nextArch = root->FindMinOutcomeArch(); while (checkedLength + nextArch->GetLength(lastIndex) < inputStringLength) { int realLength = nextArch->GetLength(lastIndex); checkedLength += realLength; nextArch = nextArch->nextVertex->FindMinOutcomeArch(); } int number = tree->FindLeafArchNumber(nextArch); delete tree; return number >= inputStringLength ? number - inputStringLength : number; }