0
該函數的對象是獲取用戶輸入以查找已添加到二叉搜索樹中的單詞。然後在BST
中使用我的搜索算法,如果找到該單詞,則打印該單詞的頻率。我的方法是採取用戶輸入並創建一個新的Word對象,然後使用tree.search
函數BST
來查找單詞,但這不是找到該單詞。我不確定我是否應該從用戶輸入創建一個新的Word對象,所以我認爲我的錯誤在於此。在二叉搜索樹中搜索Word對象
這裏是我的主要做法:
public static void search(BST tree){
Scanner input = new Scanner(System.in);
System.out.print("Search For: ");
Word searchWord = new Word(input.next());
if (tree.search(searchWord) == null){
System.out.println("Value was not found.");
}else{
System.out.println(searchWord.getFrequency());
}
}
這是我的Word類:
public class Word {
private String word;
private int frequency;
public Word(String w, int f){
word = w;
frequency = f;
}
public Word(String w){
word = w;
}
public void increment(){
frequency++;
}
public String getWord(){
return word;
}
public int getFrequency(){
return frequency;
}
public int compareTo(Word w){
return word.compareTo(w.getWord());
}
@Override
public String toString(){
return word +" "+ frequency;
}
}
這裏是我的BST搜索算法:
public Node search(Word w){
if (root == null){
System.out.println("No items to search.");
return null;
}else{
return search(w,root);
}
}
private Node search(Word w, Node n){
if (w == n.getData()){
return n;
}
if (w.compareTo(n.getData()) < 0){
if(n.getLeft() == null){
System.out.println("Item not found.");
return null;
}else{
return search(w, n.getLeft());
}
}else{
if (n.getRight() == null){
System.out.println("Item not found.");
return null;
}else{
return search(w, n.getRight());
}
}
}
在將張貼在第二個問題的代碼去什麼課? Word還是BST課? – JCCS
「現在你仍然需要重寫Word.equals()」 – Nayuki