コード例 #1
0
        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);
            }
        }
コード例 #2
0
 internal LcsTreeNode(string token, LcsTreeNode parent)
 {
     this.Token  = token;
     this.Parent = parent;
 }
コード例 #3
0
 internal LcsTreeNaive()
 {
     this._root = new LcsTreeNode(string.Empty, null);
 }