\(N\)为所有字符串的最大长度和,\(M\)为字符集大小,\(idx\)用于分配节点编号。
\(n\)为字符串长度,\(t[k][u]\)表示节点\(k\)且出边为\(u\)的另一侧节点编号。
\(insert\):插入字符串,时间复杂度\(O(n)\)。
\(visit\):遍历字符串,遍历方式和内容无定式,按需遍历。
struct Trie
{
int t[N][M], idx;
void insert(const string &s)
{
int k = 0;
for (auto i : s)
{
int u = i - 'a';
if (!t[k][u]) t[k][u] = ++idx;
k = t[k][u];
}
}
void visit(const string &s)
{
int k = 0;
for (auto i : s)
{
int u = i - 'a';
if (!t[k][u]) break;
k = t[k][u];
}
}
};
标签:遍历,idx,Trie,int,字符串,节点
From: https://www.cnblogs.com/xiojoy/p/17890870.html