Я пытаюсь реализовать метод префикса поиска для моей программы-словаря. Он ищет двоичное дерево поиска для префикса-eg. «t» или «th» для «the». На данный момент он всегда возвращает false. То, что так запутанно, заключается в том, что у меня есть очень похожий метод для поиска целых слов, и это работает отлично. Этот метод также использует очень похожие методы для обычных методов 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;
}
}
Попробуйте 'если (дерево == NULL) {return false;} 'вместо этого, потому что я думаю, что пустая строка в выражении if влияет на поток кода. – DrOverbuild
Большое спасибо за предложение! однако это не работает. – drt
Извините, если это звучит глупо, но вы можете показать, что возвращает getInfo() для узла в дереве. Поскольку я сомневаюсь в сравнении 'if (tree.getInfo(). StartWith (prefixKey)) { return true; } ', для которого, если я иду сверху вниз, строка никогда не будет удовлетворена. Как 't' никогда не начинался с 'th' ... 'th' никогда не начинался с 'the' ... – nullpointer