我有以下代码,但是在调用“ 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)。
答案 0 :(得分:0)
E
可以是taulukostaPuu
中的任何内容,不受限制。但是,在sortedArrayToBST
中它必须扩展Comparable
。这样您就会遇到类型冲突。
在此处使用相同的约束:
public static <E extends Comparable<? super E>>
BTree<E> taulukostaPuu(ArrayList<E> L)