如果每个键都有一个List作为值,如何遍历字典

时间:2011-04-05 18:02:58

标签: dictionary generics binary-tree

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; //把它放回去

2 个答案:

答案 0 :(得分:0)

要遍历链表,请从字典中获取值列表。

要获取第一个链接列表,只需在提示符上调用get(1),它将返回LinkedList<Node>

注意,我认为这是测试代码,因为它有几个问题会阻止它编译。

答案 1 :(得分:0)

我不相信你可以在循环时修改字典。您必须跟踪要删除的密钥,循环访问该集合,并一次删除每个密钥。

还有一种词典的替代方法可以让你在循环内容时修改它。