我正在尝试为我的字典程序实现搜索前缀方法。它在二叉搜索树中搜索前缀 - 例如。 " T"或者" th"为""。截至目前,它总是返回虚假。令人困惑的是,我有一个非常相似的方法来查找整个单词,而且工作得很好。这种方法也使用了与通常的BST方法非常相似的技术。任何建议将不胜感激。
private boolean recContainsPrefix(String prefixKey, BSTNode<String> tree){
//base case
if(tree==null)
return false;
//test if each node starts with the prefix.
if(tree.getInfo().startsWith(prefixKey)){
return true;
}
//recursive case.
else if(prefixKey.compareTo(tree.getInfo())<0)
return recContainsPrefix(prefixKey, tree.getLeft());
//recursive case.
else if(prefixKey.compareTo(tree.getInfo())>0)
return recContainsPrefix(prefixKey, tree.getRight());
else{
return true;
}
}
答案 0 :(得分:0)
由于它使用递归,因此在bottom up recursion
for
if(tree.getInfo().startsWith(prefixKey))
{
return true;
}
如果是,请将条件反转为:
if(prefixKey.startsWith(tree.getInfo()))
{
return true;
}