二叉搜索树的搜索前缀方法

时间:2015-11-29 20:47:15

标签: java binary-search-tree tail-recursion

我正在尝试为我的字典程序实现搜索前缀方法。它在二叉搜索树中搜索前缀 - 例如。 " 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;
    }
}       

1 个答案:

答案 0 :(得分:0)

由于它使用递归,因此在bottom up recursion for

中永远不会满足尾部条件
if(tree.getInfo().startsWith(prefixKey))
 { 
   return true; 
   }

如果是,请将条件反转为:

if(prefixKey.startsWith(tree.getInfo()))
     { 
       return true; 
       }