The class tree, also known as the vocabulary tree, is mainly used for word searches and frequent statistics.
Old rules, right on the code.
package tireTree;
public class TireTree {
TireNode root;
public TireTree(TireNode root) {
this.root = root;
}
private void insertElement(TireNode root, String word) {
if (word == null || word.isEmpty())
return;
char[] elements = word.toCharArray();
int index = elements[0] - 'a';
if (root.getNode()[index] == null) {
root.getNode()[index] = new TireNode();
root.getNode()[index].setElement(elements[0]);
}
if (word.length() == 0)
return;
insertElement(root.getNode()[index], word.substring(1));
}
private boolean searchWord(TireNode root, String word) {
if (word == null || word.isEmpty())
return false;
TireNode p = root;
int index = 0;
while (p != null && index < word.length()) {
int k = word.charAt(index) - 'a';
if (root.getNode()[k] != null) {
if (index == word.length() - 1) {
root.getNode()[k].setFreq(root.getNode()[k].getFreq() + 1);
return true;
} else {
root = root.getNode()[k];
index++;
}
} else {
return false;
}
}
return false;
}
public static void main(String[] args) {
TireNode root = new TireNode();
TireTree tree = new TireTree(root);
String context = "My Name is Tom,What is your name?My name is Jenny.";
String target = "tom";
for (String word : TireTree.transContext(context)) {
tree.insertElement(root, word);
}
System.out.println(tree.searchWord(root, target));
}
public static String[] transContext(String context) {
String c = context.toLowerCase();
c = c.replaceAll("[,?!.]", " ");
c = c.substring(0, context.length() - 1);
return c.split(" ");
}
}
class TireNode {
private TireNode[] node;
private int freq;
private char element;
public void setElement(char element) {
this.element = element;
}
public TireNode() {
node = new TireNode[26];
freq = 0;
}
public TireNode[] getNode() {
return node;
}
public int getFreq() {
return freq;
}
public char getElement() {
return element;
}
public void setNode(TireNode[] node) {
this.node = node;
}
public void setFreq(int freq) {
this.freq = freq;
}
}
Reprinted at: https://www.cnblogs.com/dick159/p/4965995.html