所以我正在制作一个二叉搜索树,我需要制作的方法之一是检索方法,它找到某个值并返回它。方法如下(我还没有测试过,不确定是否正确)
protected TreeNode retrieveItem(TreeNode r, String word) {
if (r == null){
return null;
}
if (word.compareTo(r.item.getWord()) < 0){
return retrieveItem(r.left, word);
} else if (word.compareTo(r.item.getWord()) > 0 ){
return retrieveItem(r.right, word);
}
return r;
}
因为这是一个 protected 方法,所以需要从公共(public)方法中调用它。通常要调用这些方法,我会做类似的事情
public void delete(String word) {
root = deleteItem(root, word);
}
它使用 root (已声明)和 word 调用删除方法。调用retrieve方法的问题是该方法看起来像这样
public WordRefs retrieve(String word) {
return null;
}
它说 return null 因为我不知道返回值应该是什么,并且我不确定我必须做什么才能调用它。那么我该如何调用这个方法呢?
这是 WordRefs 类:
import java.util.LinkedList;
public class WordRefs {
private String word;
private LinkedList<Integer> lineNumbers;
public WordRefs(String word) {
this.word = word;
lineNumbers = new LinkedList<>();
}
public void addLine(int lineNumber) {
lineNumbers.add(lineNumber);
}
public String getWord() {
return word;
}
public LinkedList<Integer> getLineNumbers() {
return lineNumbers;
}
public String toString() {
String result = word + ":";
for (Integer ii : lineNumbers) {
result += " " + ii;
}
return result;
}
}
最佳答案
考虑到 WordRefs
类,我认为这样的东西应该有效:
public WordRefs retrieve(String word) {
TreeNode node = retrieveItem(root, word);
if (node == null) {
return null;
} else {
return new WordRefs(node.item.word);
}
}
如果 node.item
包含有关 lineNumber
的任何信息,您可以在返回 WordRefs
对象之前添加该信息。
关于java - 如何在 BST 中调用检索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358206/