【发布时间】:2016-12-06 19:34:38
【问题描述】:
我正在尝试从 http://www.programcreek.com/2014/05/leetcode-implement-trie-prefix-tree-java/ 了解基于数组的 Trie 实现(请参阅 Java 解决方案 2 - 通过使用数组提高性能)。
public void insert(String word) {
TrieNode p = root;
for(int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
int index = c - 'a';
if(p.arr[index] == null) {
TrieNode temp = new TrieNode();
p.arr[index] = temp;
p = temp;
} else {
p = p.arr[index];
}
}
p.isEnd = true;
}
我不确定 else 分支是否被执行过。我错过了什么?
更新 1
给定的单词只包含小写英文字母
【问题讨论】:
-
旁注:
int index = c-'a';完全错误。对于大写字母、数字、空格和许多标点字符,这会产生一个负数。 -
@Jim,请参阅更新 1
-
TrieNode的来源在哪里? -
@Jim,你是什么意思?
标签: java data-structures trie