比如有如下一张表
节点编号  父节点编号  节点名称
1         0           节点1
2         1           节点2
3         2           节点3
4         1           节点4
5         3           节点5
6         2           节点6
7         4           节点7
8         5           节点8
构造树
最好能给出具体代码

解决方案 »

  1.   

    http://dev.csdn.net/article/13/13651.shtm
      

  2.   

    to:zhaochong12(超级大笨鸟)
    这个还是递归算法,我要非递归算法
      

  3.   

    可以参见我Blog上的文章,不过我原来是用VB.net写的
    http://blog.csdn.net/bluedog/archive/2005/12/25/561894.aspx
      

  4.   

    欢迎各界.Net初学&高手们加入Q群12757054(要经常在线)
    希望大家的问题能够及时的得到解决.
      

  5.   

    自己解决,希望能帮助到遇到类似问题的朋友,要是有更好的方法和建议告诉我哦.
    [email protected]
    测试数据表是文本.        private void button1_Click(object sender, EventArgs e)
            {                OpenFileDialog of = new OpenFileDialog();
                    if (of.ShowDialog() == DialogResult.OK)
                    {
                        StreamReader sr = new StreamReader(of.FileName, Encoding.Default);
                        string line;
                        int ii = 0;
                        string[] str = new string[99999];
                        TreeNode[] tn = new TreeNode[99999];
                        TreeNode ttn = new TreeNode();
                        TreeNode tnc = new TreeNode("主节点");
                        while ((line = sr.ReadLine()) != null)
                        {
                            
                           int i = int.Parse(line.Substring(0, 2)) ;
                            tn[i] = new TreeNode(line.Substring(4,3));
                            tn[int.Parse(line.Substring(0, 2))] = new TreeNode(line.Substring(4,3));
                            str[ii] = line;
                            ii=ii+1;
                        }
                      for(int i=0;i<ii;i++)
                        {
                           if (int.Parse(str[i].Substring(2, 2)) == 0)
                            {
                                tnc.Nodes.Add(tn[1]);
                            }
                            else
                            {
                                if (str[i].Substring(2, 2)==str[i].Substring(0, 2))
                                {}
                                else
                                {
                                tn[int.Parse(str[i].Substring(2, 2))].Nodes.Add(tn[int.Parse(str[i].Substring(0, 2))]);
                                }
                            }
                        }