如何将已排序的Arraylist转换为BST

时间:2018-10-01 18:26:17

标签: java sorting arraylist binary-search-tree element

我有以下代码可以使用,如何使此方法创建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中。我想保持此结构完整。我发现的所有示例都在arraylist包含整数的情况下使用,这使得以元素形式实现它们非常困难。 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;
}

不确定从这里要去哪里。我应该以某种方式遍历x的arraylist来找到2个孩子的元素,然后递归地做。有什么建议么?

1 个答案:

答案 0 :(得分:1)

您是否已检查过此click here,这是了解BST的良好起点,以防您谈论简单的BST。

相关问题