我使用称为字典树的特里结构,我想要打印所有单词。当我到达单词中的最后一个字母时插入单词时,我将完成的单词存储在字典树中。
iptables -F
在此之后,当我查找所有单词时,我遍历每个节点并尝试将单词添加到静态数组列表中,但是,由于某些原因,许多单词都是重复的,而其他单词则丢失了。
private Map<Character, DictionaryTree> children = new LinkedHashMap<>();
private String completeWord;
void insertionHelper(String currentPortion, String fullWord){
if(currentPortion.length() == 1){
if(children.containsKey(currentPortion.charAt(0))){
// do nothing
}else{
this.children.put(currentPortion.charAt(0), new DictionaryTree());
}
this.completeWord = fullWord;
}else{
if(children.containsKey(currentPortion.charAt(0))){
children.get(currentPortion.charAt(0)).insertionHelper(currentPortion.substring(1), fullWord);
}else{
DictionaryTree a = new DictionaryTree();
a.insertionHelper(currentPortion.substring(1), fullWord);
children.put(currentPortion.charAt(0), a);
}
}
}
我无法弄清楚原因。
答案 0 :(得分:0)
我不知道DictionaryTree是什么以及你的indata是什么样的,但如果你这样做
children.put(currentPortion.charAt(0), a);
这并不意味着每当你得到一个以与前一个单词相同的字符开头的单词时,旧单词可能会被新单词取代?
使用未知数据类型和所有递归调用完全理解您的代码是完全不可能的。