java - 二叉搜索树对象创建问题

标签 java binary-search-tree

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

在过去的三天里,我一直在研究二叉搜索树以用于学习目的,现在我被一个问题困扰了一天。尝试尽可能多地调试它。也尝试在互联网上搜索是否有任何帮助,但没有成功。

我有 3 节课

主类 最好的类(class) 整数集类

整数集有这个构造函数

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 插入数组元素。

当我从 main 执行此操作时

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/

相关文章:

java - 为 Web 应用程序生成序列号

algorithm - BST 中平均比较的含义

c - 如何验证二叉搜索树?

java - 递归如何遍历树

c - 在C中删除一个节点形成一个二叉搜索树

c++ - 从 trie 中按字母顺序打印所有单词

java - 带 JIT 和不带 JIT 的 JVM 之间的区别

java - 在程序启动时绘制图形; PaintComponent 从未被调用

Java 小程序无法在 IE8 上运行

javascript - 将 GraphQL 模式从非 JS 服务器公开到 JS 客户端