今天几个朋友在一起谈论到,无限级树的遍历.并且搞笑的是要用最短的代码.我一兄弟提出的损招.
我写了  贴出来,如果还有其他的朋友有其他方法,也可以贴出来,看看,我想收集到底有多少种遍历的方法.!以下是我写的
        private void love(TreeNodeCollection node)
        {
            for (int j = 0; j < node.Count; j++)
            {
                if (node[j].Nodes.Count > 0)//如果有子节点
                {
                    for (int i = 0; i < node[j].Nodes.Count; i++)
                    {
                        listBox1.Items.Add(node[j].Nodes[i].Text);
                    }
                    love(node[j].Nodes);
                }
            }
        }
调用
love(treeView1.Nodes);
大家有其他方法,可以贴一下,我想收集一些.

解决方案 »

  1.   

    上面的代码有个问题:父节点没加入
    修改:        private void love(TreeNodeCollection node)
            {
                for (int j = 0; j < node.Count; j++)
                {
                    if (node[j].Parent == null)//如果是父节点
                    {
                        listBox1.Items.Add(node[j].Text);
                    }
                    if (node[j].Nodes.Count > 0)//如果有子节点
                    {
                        for (int i = 0; i < node[j].Nodes.Count; i++)
                        {
                            listBox1.Items.Add(node[j].Nodes[i].Text);
                        }
                        love(node[j].Nodes);
                    }
                }
            }
      

  2.   

    虽然不能缩短行数,但是用foreach应该可以使代码显得更简短
      

  3.   

    private void love(TreeNodeCollection node)
            {
                foreach (Node iterNode in node)
                {
                    listBox1.Items.Add(Node.Text);
                    love(Node);
                }
            }没有作什么深入的研究,只是按楼主的方法改写成了foreach