Я пытаюсь сделать BST из отсортированного массива.Я знаю логику, как это сделать, мне просто нужен способ получить среднюю точку обеих сторон корня.Я использую пользовательский импорт, который имеет setRightChild (), getRightChild () и т. Д., Не должно быть слишком сложно понять, что они означают.Это насколько я получил:
public static <E> BTree<E> taulukostaPuu(ArrayList<E> L) {
BTree<E> T = new BTree<E>();
buildBST(L,T);
return T;
}
private static <E> void buildBST(ArrayList<E> L, BTree<E> T) {
int n = L.size();
if (n == 0)
return;
E x = L.get((L.size()/2) + (L.size() % 2));
T.setRoot(new BTreeNode<E>(x));
}
}
Я хотел бы сохранить эту структуру во всем.Любые предложения, как поступить?
Я дошел до этого, но я работаю с элементами, поэтому не знаю, как сделать эту работу.
public static <E> BTree<E> taulukostaPuu(ArrayList<E> L) {
BTree<E> T = new BTree<E>();
buildRecursively(L,L.get(0),L.get(L.size()-1),T);
return T;
}
private static <E> void buildRecursively(ArrayList<E> L,E start,E end,BTree<E> T){
if (start.compareTo(end) < 0)
return;
E x = L.get((L.size()/2) + (L.size() % 2));
int mid = (L.size() / 2);
T.setRoot(new BTreeNode<E>(x));
T.setLeftChild(buildRecursively(L, start, mid - 1));
T.setRightChild(buildRecursively(L, mid + 1, end));
}