110,536
社区成员
发帖
与我相关
我的任务
分享
public void BuildFailNode()
{
Queue<TrieNode> bfsQueue = new Queue<TrieNode>();
bfsQueue.Enqueue(Root);
TrieNode node;
while (bfsQueue.Count > 0)
{
node = bfsQueue.Dequeue();
if (!node.ParentNode.Equals(Root) && node.ParentNode.FailNode.ChildNodes.ContainsKey(node.Key))
node.FailNode = node.ParentNode.FailNode.ChildNodes[node.Key];
else
node.FailNode = Root;
foreach (TrieNode child in node.ChildNodes.Values)
bfsQueue.Enqueue(child);
}
}
private const int alignConst = 3;
private const int charPtrAlignConst = 1;