日期:2014-05-17  浏览次数:20876 次

树形结构


上面是要实现的具体树形结构:

我现在程序里面得到了一个List<TreeNode> allNodes 里面包含了所有的节点。

里面的节点的Name属性就是FB   FBM   FBW   FBM1  FBM2  这些内容,

怎么写一段递归的函数把这5个节点弄成一棵树,用treeview显示出来啊???

以前我是这样实现的,记录各个节点的时候还要记录他的parentid  ,后来看了一位高手的代码之后,发现:

人家使用有规律的编号来代替parentid的,比如说,上面的FBM1一看就知道是FBM的子节点,

一看就知道FBM和FBW是FB的子节点

我大概觉得他是取出所有的节点(allNodes)之后,用递归函数写出来的,到底这段代码要怎么写???

------解决方案--------------------

    public void CreateTree(List<TreeNode> allNodes)
        {
            foreach (TreeNode nodeTmp in allNodes)
            {
                int count = nodeTmp.Name.Length;
                while (count >= 1)
                {
                    //父节点的名字
                    string parentName = nodeTmp.Name.Substring(0, count - 1);
                    //父节点的索引
                    int parentIndex = 0;
                    for (int i = 0; i < allNodes.Count; i++)
                    {
                        if (allNodes[i].Name == parentName)
                        {
                            parentIndex = i;
                           &nbs