public void createList(Node root)
{
Dictionary<int, LinkedList<Node>> track = new Dictionary<int, LinkedList<Node>>();
LinkedList<Node> first = new LinkedList<Node>();
first.AddFirst(root);
track.Add(1, first);
int level = 1;
LinkedList<Node> temp = new LinkedList<Node>();
while (true)
{
LinkedList<Node> lis = new LinkedList<Node>();
if (level == 1)
temp = first;
foreach (Node n in temp)
{
if (n.left!=null)
lis.AddLast(n.left);
if (n.right != null)
lis.AddLast(n.right);
}
level++;
temp=lis;
if (lis.Count > 0)
{
track.Add(level, lis);
}
else
break;
}
}
您好,在 C#的上述程序中,我将二叉树的每个级别添加到单独的链接列表中,然后将每个链接列表添加到字典中。有人可以告诉我如何遍历字典中的每个链表?如果我有Track&lt; 1,&lt; 1,2,3,4&gt;&gt ;,我如何获得1,2,3,4?如果我想添加或删除1,2,3,4
,该怎么办?感谢Ramhound关于这个问题的指针,我想我将不得不为Dictionary中的每个键获取LinkedList对象,然后修改链表,我如何确保更改反映在词典中是我的下一个问题=&GT;如果以下内容有意义,请告诉我
LinkedListObject = Dictionary [mykey]; //修改LL,添加,删除等 myDictionary [myKey] = LinkedListObject; //把它放回去
答案 0 :(得分:0)
要遍历链表,请从字典中获取值列表。
要获取第一个链接列表,只需在提示符上调用get(1)
,它将返回LinkedList<Node>
。
注意,我认为这是测试代码,因为它有几个问题会阻止它编译。
答案 1 :(得分:0)
我不相信你可以在循环时修改字典。您必须跟踪要删除的密钥,循环访问该集合,并一次删除每个密钥。
还有一种词典的替代方法可以让你在循环内容时修改它。