【发布时间】:2021-12-26 09:13:51
【问题描述】:
我编写了以下代码作为 BST 的实现。添加toArray() 仅供参考。返回的数组工作得很好,但在运行该方法后它不会修改原始数组。我不确定它是否有问题,或者它是否按预期工作。有什么建议吗?
@Override
public Object[] toArray() {
Object[] array = new Object[size];
ArrayList <TreeNode<E>> list = new ArrayList<>();
toArray(root, list);
for (int i = 0; i < size; i++ ){
array[i] = list.get(i);
}
return array;
}
protected void toArray(TreeNode<E> root, ArrayList <TreeNode<E>> array){
if (root == null) return;
toArray(root.left, array);
array.add(root);
toArray(root.right, array);
}
@Override
public <T> T[] toArray(T[] array) {
if (size > array.length){
array = (T[]) Array.newInstance(toArray()[0].getClass(), size);
}
if (size >= 0) System.arraycopy(toArray(), 0, array, 0, size);
return array;
}
【问题讨论】:
-
您希望修改哪个数组?
-
@MirekPluta 他似乎对按值传递和按引用传递感到困惑。
标签: java arrays generics binary-search-tree