我在处理 Arraylist 的 Arraylist 时遇到问题。每当我清除代码中的 Arraylist al 时,ans 变量也会发生变化。我知道它是通过引用存储的。知道如何解决这个问题吗?我的代码如下:
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> ans = new ArrayList();
ArrayList<Integer> al = new ArrayList();
Queue<TreeNode> myQ = new LinkedList();
if(root == null)
return ans;
myQ.add(root);
myQ.add(null);
TreeNode temp;
while(!myQ.isEmpty()){
temp = myQ.remove();
if(temp == null){
ans.add(al);
System.out.println("al is: " + al);
System.out.println(" ans is: " + ans);
al.clear();
System.out.println(" ans is: " + ans);
if(myQ.isEmpty())
break;
myQ.add(null);
}
else{
al.add(temp.val);
if(temp.left != null)
myQ.add(temp.left);
if(temp.right != null)
myQ.add(temp.right);
}
}
//System.out.println(ans);
return ans;
}
谢谢