public void AddChild(string label, SuffixTreeNode node) { Guard.IsNotNullOrEmpty(label); SuffixTreeEdge edge = new SuffixTreeEdge(label, this, node); KeyToEdgeMap.Add(label, edge); SymbolToEdgeMap.Add(label[0], edge); }
public SuffixTreeNode Resolve(string @string) { int index = -1; SuffixTreeNode node = root; SuffixTreeEdge edge = null; for (int n = 0; n < @string.Length; n++) { char symbol = @string[n]; if (index == -1) { edge = node.GetEdge(symbol); if (edge == null) { return(null); } node = edge.EndNode; if (edge.Label.Length > 1) { index = 1; } } else { if (symbol != edge.Label[index]) { return(null); } if (++index == edge.Label.Length) { index = -1; } } } return(node); }