Я получаю OutOfMemoryError: пространство кучи Java, добавляющее массив отсортированных элементов к реализации массива двоичного дерева поиска.Я могу добавить массивы случайных целых чисел, но когда я пытаюсь добавить отсортированный массив, я сталкиваюсь с этой проблемой.Корень дерева устанавливается на самый маленький или самый большой элемент отсортированного массива, поэтому, когда вы добавляете остальные элементы, я получаю чрезвычайно несбалансированное дерево, которое пожирает мою память.Любая помощь в этом очень ценится.
Исключение в потоке "main" java.lang.OutOfMemoryError: Пространство кучи Java в bst.ArrayBinarySearchTree.resize (ArrayBinarySearchTree.java:386) в bst.ArrayBinarySearchTree.addEjear:Tech.reedinaryj (26) ArrayBinaryв bst.Experiment.main (Experiment.java:90)
public void addElement(T element) {
if(isEmpty()){
count++;
array[1] = element;
}else{
int current = 1;
boolean added = false;
while (!added) {
if(current > (array.length-(array.length*.9))){
resize();
}
if (element.compareTo(array[current]) < 0){
if (array[current*2] == null) {
array[current*2]=element;
added = true;
} else
current = current*2;
} else{
if (array[current*2+1] == null) {
array[current*2+1]=element;
added = true;
} else
current = current*2+1;
}
} //while
}
count++;
}
private void resize(){
T[] temp = (T[])(new Comparable[2*array.length-(array.length/4)]);
for(int i=0; i<array.length; i++)
temp[i] = array[i];
array = temp;
}