没有为addAll找到合适的方法(List <integer>)

时间:2015-10-22 19:29:57

标签: java inheritance arraylist

以下是我的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;
    }
}

LeetCode Question URL

1 个答案:

答案 0 :(得分:2)

问题在于您尝试将List<Integer>的所有元素添加到List<List<Integer>>。由于Integer不是List<Integer>,因此无法编译。