这里是用26个字母为搜索结构的,后期可以改为用Map结构的,这样的话适用性更高
/**
* 前缀树类
*/
static class TreeNode {
/**
* pass=1 我和我下面有1个单词
*/
public int pass;
/**
* end=1 1代表结束了
*/
public int end;
public TreeNode[] nexts;
public TreeNode() {
pass = 0;
end = 0;
nexts = new TreeNode[26];//26个字母
}
}
/**
* 插入一个单词
*/
private static void insert(TreeNode root, String product_) {
char[] product = product_.toCharArray();
TreeNode node = root;
for (int i = 0; i < product.length; i++) {
node.pass++;
int index = product[i] - 'a';
if (node.nexts[index] == null) {
node.nexts[index] = new TreeNode();
}
node = node.nexts[index];
}
node.pass++;
node.end++;
}