首页 文章

二进制搜索树对象创建问题

提问于
浏览
1

这是我的第一个问题,如果我错过了任何指南,请提前道歉 .

我正在研究二元搜索树,用于过去3天的学习目的,现在我遇到了一个问题 . 我试图尽可能地调试它 . 还试图在互联网上搜索,看看是否有任何帮助,但没有成功 .

我有3节课

主类bst类integerset类

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 .

1 回答

  • 0

    检查 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();
        }   
    }
    

相关问题