首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

根据Level指定ParentID,请问算法有关问题

2013-02-24 
根据Level指定ParentID,请教算法问题。原始示范数据如下(只有Level的级数):IDParentIDLevel100201301402503

根据Level指定ParentID,请教算法问题。
原始示范数据如下(只有Level的级数):


ID    ParentID  Level
1     0         0
2     0         1
3     0         1
4     0         2
5     0         3
6     0         3
7     0         1
8     0         0
9     0         1
10    0         2
11    0         2
12    0         0


为了按ID顺序生成以下的树形结构:
    0级 1级 2级 3级
 - 1
    - 2
    - 3
       - 4
           - 5
           - 6
    - 7
 - 8
    - 9
        - 10
        - 11
 - 12


我需要根据以上的数据中的Level,按ID顺序生成下面的ParentID:

ID    ParentID  Level
1     0         0
2     1         1
3     1         1
4     3         2
5     4         3
6     4         3
7     1         1
8     0         0
9     8         1
10    9         2
11    9         2
12    0         0


规律是:
1,8,12为第一层等,以此类推。

部分程序如下:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    //原始示例数据。
    List<Data> data = new List<Data>();
    data.Add(new Data { ID = 1,  ParentID = 0, Level = 0, });
    data.Add(new Data { ID = 2,  ParentID = 0, Level = 1, });
    data.Add(new Data { ID = 3,  ParentID = 0, Level = 1, });
    data.Add(new Data { ID = 4,  ParentID = 0, Level = 2, });


    data.Add(new Data { ID = 5,  ParentID = 0, Level = 3, });
    data.Add(new Data { ID = 6,  ParentID = 0, Level = 3, });
    data.Add(new Data { ID = 7,  ParentID = 0, Level = 1, });
    data.Add(new Data { ID = 8,  ParentID = 0, Level = 0, });
    data.Add(new Data { ID = 9,  ParentID = 0, Level = 1, });
    data.Add(new Data { ID = 10, ParentID = 0, Level = 2, });
    data.Add(new Data { ID = 11, ParentID = 0, Level = 2, });
    data.Add(new Data { ID = 12, ParentID = 0, Level = 0, });
    Format(data, 0);
    foreach(var item in data)
    {
        //这里为生成ParentID后的数据。
    }
}
void Format(List<Data> data, int Index)
{
    if (Index < data.Count)
    {
//在这里给ParentID赋值。
        data[Index].ParentID = ...;
        Format(data, Index + 1);
    }
}
class Data
{
    public int ID { get; set; }
    public int ParentID { get; set; }
    public int Level { get; set; }
}


[解决办法]
一个线性循环了,效率应该最高了吧

热点排行