private void InsertTemplate(LcsTreeNode node, IList <string> tokens, int index, int templateId) { if (index >= tokens.Count) { if (node.TemplateIds is null) { node.TemplateIds = new HashSet <int> { templateId }; } else { node.TemplateIds.Add(templateId); } } else { if (node.Children == null) { node.Children = new Dictionary <string, LcsTreeNode> { { tokens[index], new LcsTreeNode(tokens[index], node) }, }; } else if (!node.Children.ContainsKey(tokens[index])) { node.Children.Add(tokens[index], new LcsTreeNode(tokens[index], node)); } InsertTemplate(node.Children[tokens[index]], tokens, index + 1, templateId); } }
internal LcsTreeNode(string token, LcsTreeNode parent) { this.Token = token; this.Parent = parent; }
internal LcsTreeNaive() { this._root = new LcsTreeNode(string.Empty, null); }