二叉搜索树按字母搜索字符串

Binary Search Tree searching a string by letter

你好,我是一名新手程序员,我想弄清楚如何仅使用字符串开头的第一个字母在二叉搜索树中搜索字符串,例如,如果只搜索字母 '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;
        }

    }

二进制尝试不适用于那种搜索,您最好使用 hashmap: string -> array

如果你想在树中实现这种行为,你需要修改(或创建)search method,一旦它找到符合条件的第一个节点,在你的情况下字符串开始对于 "L",它需要 return 该节点并遍历树起源于该节点, 您可以通过简单的进出顺序遍历等来完成...并检查该标准的所有后续节点,它不能停止直到到达叶子因此使得这个发现复杂性因为 O(N) 基本上遍历所有(子)树..