首页 > 解决方案 > 我写了一个二分搜索,但有一些错误

问题描述

我用 post order 写了一个二叉树,但我收到了一些错误消息..

错误图片

 public static void main(String [] args) {
    int input;
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter the number of the data: ");
    input = sc.nextInt();
    int[] data;

    data = new int[input];
    BSTree tree = new BSTree();
    System.out.println("Enter the values: ");
        for (int i = 0; i < input; i++) {
            data[i] = sc.nextInt();
        }
            System.out.print(data + " ");
            tree.insert(data[input]);
        System.out.println();

        System.out.println("It used preorder.");
        System.out.println("BinarySearchTree - size: " + tree.size() + " height: " + tree.height());
        tree.postorder();   // left right root

我现在可以存储 5 个号码。但是现在我无法显示我插入的数据和发布顺序,这是怎么回事?

    public static void main(String [] args) {
int input;
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number of the data: ");
input = sc.nextInt();

int[] data = new int[input];
BSTree tree = new BSTree();
System.out.println("Enter the values: ");
    for (int i = 0; i < data.length; i++) {
        data[i] = sc.nextInt();
    }
        System.out.print(data + " ");
        tree.insert(input);

    System.out.println("It used preorder.");
    System.out.println("BinarySearchTree - size: " + tree.size() + " height: " + tree.height());
    tree.postorder();

我更喜欢显示 Inserted : 33 44 22 11 23 postorder :

现在显示

   Enter the number of the data: 5
Enter the values:
32
23
13
12
4
[I@5b6f7412 It used preorder.
BinarySearchTree - size: 1 height: 0
5

标签: javabinary-search-tree

解决方案


这是错误。

tree.insert(data[input]);

例如,如果输入是 5,那么

data = new int[input];

创建一个由 5 个元素组成的数组,最后一个索引为 4。所以 data[5] 会抛出这样的异常。

Ps在你的截图中有一行错误=)


推荐阅读