【发布时间】:2019-03-06 19:04:11
【问题描述】:
我正在尝试从排序数组中创建 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));
}
【问题讨论】:
标签: java sorting arraylist methods binary-search-tree