【问题标题】:Writing an insert method for a binary search tree为二叉搜索树编写插入方法
【发布时间】:2015-04-02 00:51:40
【问题描述】:

我正在尝试实现在 Java 中创建二叉搜索树的方法,最终将能够创建单词引用报告。

我的问题是我的insertItem 方法无法正确编译。

else if(word.compareTo(r.item)){ 行给出了指向r.item 的编译器错误,并表示它无法转换为字符串。我该怎么做才能解决这个问题?

public void insert(String word) {
    root = insertItem(root, word);
}

protected TreeNode insertItem(TreeNode r, String word) {
    //base case
    if (r==null) {
        new TreeNode(new WordRefs(word));
    }
    else if (word.compareTo(r.item)) {
        r.left = insertItem(r.left, word);
    } else {
        r.right = insertItem(r.right, word);
    }
    return r;
}

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

class TreeNode {
    WordRefs item;
    TreeNode left;
    TreeNode right;

    public TreeNode(WordRefs item) {
        this.item = item;
        this.left = this.right = null;
    }

    public TreeNode(WordRefs item, TreeNode left, TreeNode right) {
        this.item  = item;
        this.left  = left;
        this.right = right;
    }
}

【问题讨论】:

  • 你能发布你的 WordRefs 类和 TreeNode 类吗,我之前用相同的类回答了一个问题,但没有看到它们
  • 我添加了两者的代码,它告诉我 WordRefs 不能转换为字符串
  • 我只是使用 getWord() 方法并将其与 0 进行比较

标签: java insert binary-search-tree


【解决方案1】:

你的插入函数应该是这样的,你必须使用 WordReft 中的 getWord() 函数,它应该是 0 到右侧

protected TreeNode insertItem(TreeNode r, String word) {
//base case
if(r==null){
 r =   new TreeNode(new WordRefs(word));
    }
else if(word.compareTo(r.item.getWord()) <= 0){
    r.left = insertItem(r.left, word);
}else{
    r.right = insertItem(r.right, word);
}
return r;
}

【讨论】:

  • 感谢它现在编译!
  • 欢迎您,祝您学习数据结构好运,假设您正在学习数据结构:)
  • edit 只需将 r = 放入 if(r == null) 你必须返回 r
猜你喜欢
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多