Trie树的实现
Trie树也就是字典树,可以高效地用来进行字符串地检索。具体实现如下:
class Trie { // 树上节点类型 private class Node{ // 判断到该节点位置,是否是一个之前插入地字符串 public boolean isEnd; // 不同字母分别对应不同地分支 public Node[] next; Node() { isEnd = false; next = new Node[26]; } } // 根节点 private Node root; public Trie() { root = new Node(); } public void insert(String word) { Node now = root; for (int i = 0; i < word.length(); i ++) { int pos = word.charAt(i) - 'a'; if (now.next[pos] == null) { now.next[pos] = new Node(); } now = now.next[pos]; } //将这个节点设置为true,表示是一个合法的字符串 now.isEnd = true; } public boolean search(String word) { Node now = root; for (int i = 0; i < word.length(); i ++) { int pos = word.charAt(i) - 'a'; if (now.next[pos] == null) return false; now = now.next[pos]; } return now.isEnd; } public boolean startsWith(String prefix) { Node now = root; for (int i = 0; i < prefix.length(); i ++) { int pos = prefix.charAt(i) - 'a'; if (now.next[pos] == null) return false; now = now.next[pos]; } return true; } }