您好我是一名新手程序员,试图弄清楚如何仅使用它开头的第一个字母来搜索二进制搜索树中的字符串,例如,如果只搜索字母“L”,它应该会显示所有字符串以该字母开头的名字。下面是我们到目前为止搜索全名的方法。
public void searchByName() throws IOException//My pride and joy
{
String exit=null;//to exit the inner while loop
Boolean end=false;// exit the outer while loop
while(end!=true) //search author by first name loop
{
@SuppressWarnings("resource")
Scanner keyboard = new Scanner(System.in);
System.out.printf("Please enter the Author's Last and First:(please enter in this format(Johnson, Cevion)\n");
String name = keyboard.nextLine();
System.out.println("This is what we found!!\n");
System.out.println(findFullName(name));
System.out.printf("Do you want to search again?? Yes or No\n");//search again loop
exit = keyboard.nextLine();
while(!exit.equalsIgnoreCase("yes")&&!exit.equalsIgnoreCase("no"))//yes or no only loop
{
System.out.printf("Invaild choice please enter: Yes or No\n");
exit = keyboard.nextLine();
}
if(exit.equalsIgnoreCase("yes"))
end=false;
if(exit.equalsIgnoreCase("no"))
end=true;
}
}
答案 0 :(得分:0)
二进制尝试不适用于那种搜索,最好使用hashmap: string -> array
如果你想在树中实现这种行为,你需要修改(或创建)search method
,一旦找到第一个符合条件的节点,在你的情况下,字符串以“ L“,它需要返回该节点并遍历该节点的树形式,
你可以用一个简单的in-out顺序遍历等来做...然后检查所有后续节点的那个标准,它不能停止直到到达叶子因此使得这找到复杂性,因为O(N)基本上遍历所有(子)树..