递归实现对TreeView的Node的填充

树的数据结构是从根节点开枝散叶,父节点唯一。

首先初始化要展示的数据,用Dictionary保存:

1
Dictionary<int, List<int>> dt;

初始化数据,数字0为根节点,字典中的key有[0,1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void InitData()
{
    dt = new Dictionary<int, List<int>>();
    dt[0] = new List<int>();
    for (int i = 1; i < 5; i++)
    {
        dt[0].Add(i);
        dt[i] = new List<int>();
        for (int j = 1; j < 5; j++)
        {
            dt[i].Add(i * 10 + j);
            dt[i * 10 + j] = new List<int>();
            for (int k = 1; k < 5; k++)
                dt[i * 10 + j].Add(i * 100 + j * 10 + k);
        }
    }
}

填充节点的递归函数,将节点作为参数传递,程序从数据中找到节点的子数据,再创建为节点填充,然后递归调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
private void FillNode(TreeNode node)
{
    int id = Convert.ToInt16(node.Text);
    if (!dt.ContainsKey(id))
        return;
    foreach (int val in dt[id])
    {
        TreeNode subNode = new TreeNode();
        subNode.Text = val.ToString();
        node.Nodes.Add(subNode);
        FillNode(subNode);
    }
}

填充树的根节点0,然后将根节点作为参数调用递归函数:

1
2
3
4
5
6
7
8
private void FillTreeView()
{
    TreeNode rootNode = new TreeNode();
    rootNode.Text = "0";
    this.treeView1.Nodes.Add(rootNode);
    FillNode(rootNode);
    this.treeView1.ExpandAll();
}

运行程序:

 

  

  

  

  

posted @   [春风十里]  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示