Проблема со сборкой BST от отсортированного массива - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующий код, но он выдает ошибку, когда я вызываю мой метод "sortedArrayToBST", как мне это исправить?

 public static <E> BTree<E> taulukostaPuu(ArrayList<E> L) {

     BTree<E> T = new BTree<E>();

     sortedArrayToBST(L,T);    <-----gives error here.


     return T;

} 




private static <E extends Comparable<? super E>> 
BTree<E> sortedArrayToBST(ArrayList<E> l, BTree<E> t) {

        if(t.getRoot() == null) {
        t.setRoot(new BTreeNode<E>(l.get(0)));
        }

        for(int i = 0 ; i < l.size();  i++) {   


             E q = l.get(i);
             BTreeNode<E> p = t.getRoot();

        while(true)
        {    
         if(q.compareTo(p.getElement()) <= 0)
         {  

          if(p.getLeftChild() == null)
           {     
           p.setLeftChild(new BTreeNode<E>(q));
           break;                         
           }
          else
          p = p.getLeftChild();
         }
         else if(q.compareTo(p.getElement()) > 0)
         {
          if(p.getRightChild() == null)
           {      
           p.setRightChild(new BTreeNode<E>(q));
           break;                            
           }
          else
              p = p.getRightChild();          
         }   
        }
     }
    return t;
 }

Я хотел бы сохранить эту структуру. Я использую пользовательский импорт, содержащий getLeftChild () и т. Д., Который должен быть довольно прост для понимания.

Также, если есть в любом случаесделайте это полным за линейное время, это было бы здорово.Я уверен, что он не так эффективен, как O (n).

1 Ответ

0 голосов
/ 03 октября 2018

E может быть любым в taulukostaPuu, это не ограничено.Однако в sortedArrayToBST оно должно расширяться Comparable.Таким образом, вы получите конфликт типов.

Используйте те же ограничения здесь:

public static <E extends Comparable<? super E>>
    BTree<E> taulukostaPuu(ArrayList<E> L)
...