以下是我的LeetCode二进制树级别顺序遍历问题的代码。它在第24行给出了编译错误,因为没有为addAll(List)找到合适的方法,所以我理解这是因为addAll(Collections c)没有为抽象类型定义,即list,但是当我将thisLevel的声明更改为ArrayList时,我仍然得到同样的错误。
为什么以及如何修改以下内容以使其成为有效的作业?
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result=new ArrayList<List<Integer>>();
if(root==null) return result;
LinkedList<TreeNode> parents=new LinkedList<TreeNode>();
List<TreeNode> children=new LinkedList<TreeNode>();
parents.add(root);
List<Integer> thisLevel=new ArrayList<Integer>();
while(parents.size()!=0 || children.size()!=0){
TreeNode p=parents.remove();
thisLevel.add(p.val);
if(p.left!=null) children.add(p.left);
if(p.right!=null) children.add(p.right);
if(parents.size()==0) {
result.addAll(thisLevel);
thisLevel=new ArrayList<Integer>();
parents=children;
children= new LinkedList<TreeNode>();
}
}
return result;
}
}
答案 0 :(得分:2)
问题在于您尝试将List<Integer>
的所有元素添加到List<List<Integer>>
。由于Integer
不是List<Integer>
,因此无法编译。