所以我做了一个二叉搜索树,我需要做的一个方法是一个检索方法,它找到一个值并返回它。这是方法(我还没有测试过,所以我不确定它是否正确)
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;
}
因为这是受保护的方法,所以需要从公共方法调用它。通常调用这些方法我会做类似的事情
public void delete(String word) {
root = deleteItem(root, word);
}
使用root(已经声明)和word调用delete方法。调用retrieve方法的问题是该方法看起来像这样
public WordRefs retrieve(String word) {
return null;
}
它表示返回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;
}
}
答案 0 :(得分:0)
鉴于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
对象之前添加该信息。