递归实现对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(); } |
运行程序:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)