Tar*_*rak 5 .net c# generics list generic-collections
对于级别顺序遍历,为什么会发生此异常?发生以下异常:
无法将类型'
System.Collections.Generic.List<System.Collections.Generic.List<int>>
' 隐式转换为'System.Collections.Generic.IList<System.Collections.Generic.IList<int>>
'。存在显式转换(您是否缺少演员表?)
public IList<IList<int>> LevelOrder(TreeNode root)
{
var result = new List<List<int>>();
var que = new Queue<TreeNode>();
//if(root==null) return result;
que.Enqueue(root);
while(que.Count!=0)
{
int n = que.Count;
var subList = new List<int>();
for(int i=0;i<n;i++)
{
if(que.Peek().left!=null)
que.Enqueue(que.Peek().left);
if(que.Peek().right!=null)
que.Enqueue(que.Peek().right);
subList.Add(que.Dequeue().val);
}
result.Add(subList);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
只需将结果声明更改为即可List<IList<int>>
。
List<T>
实现IList<T>
,但List<List<T>>
不实现IList<IList<int>>
。除非以这种方式定义,否则泛型参数不是协变或协变的IList<T>
,因此类型必须完全匹配。
public IList<IList<int>> LevelOrder(TreeNode root)
{
var result = new List<IList<int>>();
var que = new Queue<TreeNode>();
//if(root==null) return result;
que.Enqueue(root);
while (que.Count != 0)
{
int n = que.Count;
var subList = new List<int>();
for (int i = 0; i < n; i++)
{
if (que.Peek().left != null)
que.Enqueue(que.Peek().left);
if (que.Peek().right != null)
que.Enqueue(que.Peek().right);
subList.Add(que.Dequeue().val);
}
result.Add(subList);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1474 次 |
最近记录: |