public class TrialBalanceDto
{
    public long Code { get; set; }
    public int Indent{ get; set; }
}

有一个数组,由上面这个对象构成的数组,然后其中 Indent 代表缩进程度,比如下面的数据

原始数据为:

Untitled

将每行数据转为缩进值和对应的code组成的对象,然后形成一维数组,结果如下:

[
    {
        "code": 70000000,
        "indent": 2
    },
    {
        "code": 70100000,
        "indent": 3
    },
    {
        "code": 70116210,
        "indent": 4
    },
    {
        "code": 70116220,
        "indent": 4
    },
    {
        "code": 11,
        "indent": 5
    },
    {
        "code": 21,
        "indent": 5
    },
    {
        "code": 70116240,
        "indent": 4
    },
    {
        "code": 11,
        "indent": 5
    },
    {
        "code": 21,
        "indent": 5
    },
    {
        "code": 70116250,
        "indent": 4
    },
    {
        "code": 70116320,
        "indent": 4
    },
    {
        "code": 11,
        "indent": 5
    },
    {
        "code": 70200000,
        "indent": 3
    },
    {
        "code": 70200300,
        "indent": 4
    },
    {
        "code": 120,
        "indent": 5
    }
    {
        "code": 72000000,
        "indent": 2
    },
    {
        "code": 72100000,
        "indent": 3
    },
    {
        "code": 72110000,
        "indent": 4
    },
    {
        "code": 72111110,
        "indent": 5
    },
    {
        "code": 72111220,
        "indent": 4
    },
    {
        "code": 100,
        "indent": 5
    }
]

如何通过算法将其转为树形结构?,如下结构

public class TrialBalanceDto
{
    public long Code { get; set; }
    public int Indent{ get; set; }
		public List<TrialBalanceDto> Childrens { get; set; }
}