如何在BST中调用检索方法

时间:2015-03-30 23:39:59

标签: java methods tree

所以我做了一个二叉搜索树,我需要做的一个方法是一个检索方法,它找到一个值并返回它。这是方法(我还没有测试过,所以我不确定它是否正确)

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;
    }
}

1 个答案:

答案 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对象之前添加该信息。