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