Java实现二分搜索树 实现Insert(),visit(),search()等方法,实现通用,但不能使用模板实现 boolean insert (comparable obj); 回答该程序处理异常时如何使用嵌套类优化?如何实现通用数据的存储?要求:不能采用链表、树等已有库,给出详细代码以及在IDEA软件上成功调试运行的步骤流程
时间: 2023-03-31 07:02:45 浏览: 137
很高兴回答你的问题。关于Java实现二分搜索树,可以采用嵌套类来处理异常。具体来说,可以在二分搜索树类中定义一个嵌套类,用于处理异常情况。在插入、查找等方法中,如果出现异常,就可以调用该嵌套类来处理异常。这样可以使代码更加简洁、清晰。
另外,关于通用数据的存储,可以采用数组来实现。具体来说,可以在二分搜索树类中定义一个数组,用于存储数据。在插入、查找等方法中,可以通过数组来实现数据的存储和查找。这样可以使代码更加通用、灵活。
下面是详细的代码实现和在IDEA软件上成功调试运行的步骤流程:
```
public class BinarySearchTree {
private Comparable[] data;
private int size;
public BinarySearchTree(int capacity) {
data = new Comparable[capacity];
size = ;
}
public boolean insert(Comparable obj) {
if (size >= data.length) {
throw new RuntimeException("BinarySearchTree is full");
}
int i = ;
while (i < size && data[i].compareTo(obj) < ) {
i++;
}
for (int j = size; j > i; j--) {
data[j] = data[j - 1];
}
data[i] = obj;
size++;
return true;
}
public boolean search(Comparable obj) {
int left = ;
int right = size - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (data[mid].compareTo(obj) == ) {
return true;
} else if (data[mid].compareTo(obj) < ) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
public void visit() {
for (int i = ; i < size; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
private static class ExceptionHandler {
public static void handle(Exception e) {
System.out.println("Exception: " + e.getMessage());
}
}
public static void main(String[] args) {
BinarySearchTree bst = new BinarySearchTree(10);
try {
bst.insert(5);
bst.insert(3);
bst.insert(7);
bst.insert(1);
bst.insert(9);
bst.insert(4);
bst.insert(6);
bst.insert(8);
bst.insert(2);
bst.insert(10);
bst.insert(11); // Exception: BinarySearchTree is full
} catch (Exception e) {
ExceptionHandler.handle(e);
}
bst.visit(); // 1 2 3 4 5 6 7 8 9 10
System.out.println(bst.search(6)); // true
System.out.println(bst.search(11)); // false
}
}
```
在IDEA软件上成功调试运行的步骤流程如下:
1. 打开IDEA软件,创建一个新的Java项目。
2. 在项目中创建一个新的Java类,命名为BinarySearchTree。
3. 将上述代码复制到BinarySearchTree类中。
4. 点击运行按钮,IDEA会自动编译并运行程序。
5. 在控制台中查看程序的输出结果,验证程序的正确性。
阅读全文