2015-04-02 4 views
1

Я пытаюсь реализовать методы создания двоичного дерева поиска на 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; 
    } 
} 
+0

вы можете разместить ваш класс WordRefs и ваш класс TreeNode, я ответил на вопрос раньше с теми же классами и нету видел их – JRowan

+0

Я добавил код для обоих, он говорит мне, WordRefs не может быть преобразован в строку –

+0

я просто положить и ответ использует метод getWord(), и его сравнивают с 0 – JRowan

ответ

0

ваша функция вставки должна быть что-то вроде этого, вы должны использовать функцию GetWord() из WordReft и она должна быть < = 0, чтобы перейти на левую сторону и> 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; 
} 
+0

Спасибо, что он компилирован ле теперь! –

+0

ваш приветствуем, удачи, изучая структуры данных, предполагая, что ваши структуры данных обучения :) – JRowan

+0

edit just put r = в if (r == null) вам нужно вернуть r – JRowan

Смежные вопросы