这是我的第一个问题,因此,如果我错过任何指导方针,请提前道歉。

我在过去三天里一直在为搜索目的使用二进制搜索树,而现在我每天只遇到一个问题。尝试尽可能调试它。还尝试在Internet上搜索以查看是否有帮助,但没有成功。

我有3节课

主班
班级
整数集类

integerset具有此构造函数

public IntegerSet(int arr[])
{
    this.bst1 = new BST();
    for (int i = 0; i < arr.length; i++) {
        this.bst1.insert(arr[i]);
        this.magnitude = this.bst1.getSize();
    }

}


创建bst对象并将数组元素插入bst。

当我从主要做到这一点

int[] arr = {1,2,3,4,5};
iSet = new IntegerSet(arr);


一切正常,但是当我创建另一个对象时

int[] arr2 = {4,5,6,7};
iSet2 = new IntegerSet(arr2);


创建第二个对象后,两个对象的bst都相同,其中包含第二个数组。
一直试图解决这个问题,但不明白为什么会发生这种情况,两个都应该有自己的整数集对象和自己的bst。

最佳答案

检查IntegerSet的实现。应该是这样的:

class IntegerSet {
    private final BST bst = new BST();
    private int magnitude;

    public IntegerSet(int[] arr) {
        for(int val : arr)
            bst.insert(val);
        magnitude = bst.getSize();
    }
}

关于java - 二进制搜索树对象创建问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53686743/

10-09 05:42
查看更多