我遇到的問題是我有一個二進制搜索三,所有節點包含字符串值而不是整數。它從txt文件中獲取這些字符串,並將文件中的各行文本作爲節點放入樹中。這沒有問題。在二叉搜索樹Java中查找單詞?
我的問題是,我需要一種方法,遍歷我的樹,並找到一個特定的單詞。我已經有單獨的類BinarySearchTree和BinaryTreeNode作爲我嘗試創建的樹的基礎。它需要找到的單詞位於一個名爲「lookup test file copy.txt」的文件中,它需要將它找到的單詞寫入另一個名爲「SearchResults.txt」的文件中。
我只是不知道如何這樣做,所以我在尋找建議。
這是我需要幫助的方法:
public boolean SearchWord(String target){
//returns true if the target string exists in the dictionary
// otherwise it returns false
//ALSO you need to write the results of Search
//in an output file called "SearchResults.txt"
return false;
}
這裏是我的所有代碼,除上面提到的,如果它可以幫助其他兩個班。
public class Dictionary {
public BinaryTreeNode theBinaryTree;
/**
* I need to read one string by one string
* and then insert it into a tree.
* I need to read all of the strings in the source file, line by line,
* and insert them into my dictionary.
* After readinga single string, it needs to put it into a tree.
* I first need to create the dictionary tree,
* and then implement these methods on the tree.
* The Dictionary type is string.
* @throws FileNotFoundException
*/
private BinaryTreeNode dictionaryTree; // this is the tree within your dictionary class
public Dictionary(String filePath) throws IOException{
BufferedReader br = new BufferedReader(new FileReader("Dictionary.txt"));
this.dictionaryTree = readFile(br);
br.close();
}
public BinaryTreeNode readFile(BufferedReader reader) throws IOException{
String word = reader.readLine();
if(word!=null){
return new BinaryTreeNode(word, readFile(reader), readFile(reader));
}else{
return new BinaryTreeNode() ; // empty node or null?
}
}
/**
* @return
* Once again, I already have this method written and modified
* within the BinarySearchTree class.
* I'm simply going to call it over here.
*/
public int CountWords(){
//returns the number of words in the dictionary
//This is just counting nodes.
BinarySearchTree Aria = new BinarySearchTree();
return Aria.countNodes(dictionaryTree);
}
public boolean SearchWord(String target){
//returns true if the target string exists in the dictionary
// otherwise it returns false
//ALSO you need to write the results of Search
//in an output file called "SearchResults.txt"
return false;
}
/**
* I already modified the print order method
* in BinarySearchTree
* to work with strings.
* So I just called it here on the dictionaryTree.
* @PrintOrderedDict()
*
* However, I also had to modify the method,
* so that it wrote whatever values the method recieved
* to teh output file.
*/
public void PrintOrderedDict() throws IOException{
//Print the dictionary words
//in order in a new file called "OrderedDictionary.txt".
//Just modify print order to work with strings.
try {
BinarySearchTree jojo = new BinarySearchTree();
FileWriter fstream = new FileWriter("OrderedDictionary.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(jojo.inorderPrint(dictionaryTree));
out.close();}
catch (Exception e) {
System.err.println("Error");
}
}
public boolean DeleteWord(String target){
//delete the target word if it exits in the dictionary and return true
//otherwise return false
return false;
}
}
任何幫助或建議,將不勝感激。
---- ----編輯
這也是「dictionary.txt」文件的一個小樣本(這是太長,把整個事情)
ourselves
out
over
own
same
shan't
she
all
這是「查找測試文件copy.txt」文件:
the
program
a
ours
house
ME
ours
main
java
whom
with
如果我沒有弄錯,它就是一個簡單的例子:「如果您搜索的詞按字母順序低於光標所在的那一個,然後向左移動,否則向右移動。」直到找到該單詞並返回true,或者根本沒有找到該單詞並返回false,請遞歸執行此操作。 –
嘗試用鉛筆和紙做的,看看它是如何工作的。 –