赞
踩
- /**
- * Definition for a binary tree node.
- * public class TreeNode {
- * int val;
- * TreeNode left;
- * TreeNode right;
- * TreeNode() {}
- * TreeNode(int val) { this.val = val; }
- * TreeNode(int val, TreeNode left, TreeNode right) {
- * this.val = val;
- * this.left = left;
- * this.right = right;
- * }
- * }
- */
- class Solution {
- public List<List<Integer>> levelOrder(TreeNode root) {
- Deque<TreeNode> queue = new LinkedList<TreeNode>();
- List<List<Integer>> levelListAll = new ArrayList<List<Integer>>();
- queue.offer(root);
- while(!queue.isEmpty()){
- int level_size = queue.size();
- List<Integer> levelList = new ArrayList<Integer>();
- for(int i=0;i<level_size;i++){
- TreeNode node = queue.poll();
- levelList.add(node.val);
- if(node.left!=null){
- queue.offer(node.left);
- }
- if(node.right!=null){
- queue.offer(node.right);
- }
- }
- levelListAll.add(levelList);
- }
- return levelListAll;
- }
- }
遇到了错误Line 19: error: incompatible types: ArrayList<List<Integer>> cannot be converted to List<ArrayList<Integer>> List<ArrayList<Integer>> levelListAll = new ArrayList<List<Integer>>(); ^ Line 34: error: incompatible types: List<Integer> cannot be converted to ArrayList<Integer> levelListAll.add(levelList); ^ Line 36: error: incompatible types: List<ArrayList<Integer>> cannot be converted to List<List<Integer>> return levelListAll; ^ 3 errors
这个错误的原因是使用了 List<ArrayList<Integer>> levelListAll = new ArrayList<List<Integer>>();
而这里本来应该是 List<List<Integer>> levelListAll = new ArrayList<List<Integer>>();
gpt给出的解释是
在这段代码中,问题在于声明的变量类型和初始化的类型不匹配。
声明的变量类型是 List<ArrayList<Integer>>
,它声明了一个列表,其中的每个元素都是 ArrayList<Integer>
类型的列表。这意味着你期望使用 ArrayList<Integer>
的列表。
而在初始化时,你试图将其初始化为 new ArrayList<List<Integer>>()
. 这个初始化表达式创建了一个 ArrayList<List<Integer>>
类型的对象,其中的每个元素都是 List<Integer>
类型的列表。这与声明的类型不匹配,因为声明的类型期望使用的是 ArrayList<Integer>
类型的列表,而不是 List<Integer>
类型的列表。
正确的声明应该是 List<List<Integer>>
,以匹配初始化时使用的类型。
按照我的理解,右边的始终应该比左边具体,右边是ArrayList,左边就应该是List,现在最内层,右边是List,左边是ArrayList,左边比右边具体了,就抽象了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。