java - 我写了一个二分搜索,但有一些错误
问题描述
我用 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
解决方案
这是错误。
tree.insert(data[input]);
例如,如果输入是 5,那么
data = new int[input];
创建一个由 5 个元素组成的数组,最后一个索引为 4。所以 data[5] 会抛出这样的异常。
Ps在你的截图中有一行错误=)
推荐阅读
- ios - 以编程方式推送 ViewController
- uwp - UWP 与设备取消配对失败
- android - 如果我已经在使用 admob,是否需要集成 InMobi sdk
- facebook-graph-api - Instagram 故事 API
- android - 您可能无权在此组织中创建项目
- node.js - 在 node.js Express 服务器上部署 Angular Universal
- google-data-studio - 数据洞察社区连接器:结合基于时间和非时间的指标
- docker - apt-key 命令在 shell 上有效,但在 Dockerfile 上失败
- php - 空对象模式无法解决多种返回类型的问题
- regex - 评估多个正则表达式的优化