Example #1
0
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;
}