浅谈“踹”字典树
字典树,顾名思义它是棵树,是棵处理字符串的树,具体是棵什么样的树呢,我们可以举个栗子: 假设现在有四个字符串:ych,yk,devot: 那么这棵树大概长这个亚子: 而图中加黑的点,也就是每个单词的终点; 主要用于查询前缀与单词? 然后咱们康实现: 1.插入一个单词: 首先我们设置了一个 \(trie[i][j]\) 数组(这里设trie树中全是小写英文字母,那这样对于每个节点,名义上是有26个子节点的。但是显然我们没必要将空间开的这么大,因为可能在一组数据中,有些字母是没有出现过的,所以我们用多少,开多少),表示以i为根的子树里,第j个字符的编号是多少。 可能有点抽象,我们以上图为例: 假设加入单词的顺序是:ych,yk,devot 那么(设1为根: \[ trie[1][24]=2;\to y\\ trie[2][2]=3;\ \ \to c\\ trie[3][7]=4;\ \ \to h\\ trie[2][10]=5;\to k\\ trie[1][3]=6;\ \ \to d\\ trie[6][4]=7; \ \ \to e\\ trie[7][14]=8;\to o\\ trie[8][19]=9;\to t \] 从这里可以看出,对于一个字母来说,它拥有两个编号,一个编号是固定不变的,也就是我们上面数组中的j,而另一个编号,同一个字母可以不同