Целью этой функции является получение пользовательского ввода для поиска слова, которое было добавлено в двоичное дерево поиска. Затем, используя наш алгоритм поиска в 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());
}
}
Это мой класс Слово:
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());
}
}
}
В каком классе будет код размещен во втором номере идти? Слово или класс BST? – JCCS
"теперь вам все равно нужно переопределить Word.equals()" – Nayuki