2015-04-02 34 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類和你的樹節點類,我回答的問題與之前相同的類和還沒有看到他們 – JRowan 2015-04-02 01:04:49

+0

我添加的代碼都,它告訴我WordRefs不能轉換爲字符串 – 2015-04-02 01:14:02

+0

我只是把並回答使用getWord()方法和它相比0 – JRowan 2015-04-02 01:20:20

回答

0

您插入功能應該是這樣的,你必須使用從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

感謝它compi現在! – 2015-04-02 01:23:32

+0

你的歡迎,祝你好運學習數據結構,假設你的學習數據結構:) – JRowan 2015-04-02 01:24:56

+0

編輯只是把r =放入if(r == null)你必須返回r – JRowan 2015-04-02 01:44:19