首页 > 编程语言 >递归实现对TreeView的Node的填充

递归实现对TreeView的Node的填充

时间:2023-07-26 10:55:05浏览次数:41  
标签:Node TreeNode 递归 int Add new dt TreeView 节点

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

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

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]:

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);
        }
    }
}

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

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,然后将根节点作为参数调用递归函数:

private void FillTreeView()
{
    TreeNode rootNode = new TreeNode();
    rootNode.Text = "0";
    this.treeView1.Nodes.Add(rootNode);
    FillNode(rootNode);
    this.treeView1.ExpandAll();
}

运行程序:

 

  

  

  

  

标签:Node,TreeNode,递归,int,Add,new,dt,TreeView,节点
From: https://www.cnblogs.com/cfsl/p/17580751.html

相关文章

  • python递归计算1到n的和
    Python递归计算1到n的和引言在编程中,递归是一种非常常见和重要的技巧。递归是指在函数的定义中使用函数自身的方法。递归可以解决许多复杂的问题,其中包括计算1到n的和。本文将教会你如何使用Python递归计算1到n的和。流程展示下面是计算1到n的和的流程示意表格:步骤描述......
  • Qt QTreeView实现三态复选框
    //参考:https://dgrt.cn/a/1328707.html?action=onClickvoidQtWidgetsApplication1::initTreeView(){ ui.treeView->setEditTriggers(QTreeView::NoEditTriggers); //自定义右键菜单 this->setContextMenuPolicy(Qt::CustomContextMenu); //最喜欢用的model,不喜欢自己写model......
  • cdh node扩容
    参考:https://blog.csdn.net/xiaoweite1/article/details/123919740#hostname修改hostnamectlset-hostnamebpit64#ssh免密认证。。。略#/etc/hosts修改10.5.250.56bpit56.tal.combpit5610.5.250.57bpit57.tal.combpit5710.5.250.58bpi......
  • Node脚本对象
    ​​编辑​Node对象:包含脚本编写,点击对象在Script界面中进行编程 对Node上面右键点击:    *[导出script]脚本和[导出]对象,以实现对象的保存/复用    *引用:选择一个被引用的对象,在需要引用的对象上面右键/设置引用        那么就会......
  • Python学习笔记:递归、闭包以及装饰器
    一、首先,什么是递归?首先,简单来说递归就是在运行的过程中不断调用自身,从而完成“递”和“归”两个过程。在Python当中递归函数也是这个道理,通过直接或者间接调用函数本身就叫递归函数。注:在Python中编写递归函数一定要有结束条件否则会导致内存溢出。1、Python案例:​ 首先......
  • master和node的ip发生变化
    之前部署k8s的时候用的dhcp自动获取ip,因为服务器常年不关,所以也没绑定静态ip某天公司停电,导致服务器重启后我的机器也重启原ip已经被其他机器抢占但是k8s的各种服务配置都使用的固定老的ip因此,就需要重新设置集群服务器的ip最初我是手动修改的各个配置文件中旧的IP,发现不行,因......
  • Node.js入门 - 永恒的Hello World!
    文章原作者为LeeJacobson,已经作者授权翻译用于非商业用途。介绍 这是我的关于Node.js系列入门教程的第一篇。必须说明一下,我并不是Node.js的专家,但是尝试向别人解释这是怎么回事是自我学习的一个好方法。如果你发现有些地方并不是那么正确,请提出来让我知道以便修正,谢之。 最近......
  • 把Pod分配到node上
    分配Pod到node给node打上标签kubectllabelnodes<your-node-name>disktype=ssd查看标签kubectlgetnodes--show-labels根据标签分配nodeapiVersion:v1kind:Podmetadata:name:nginxlabels:env:testspec:containers:-name:nginximage:n......
  • 快速切换 nodejs 的版本
    最近在开发一个常驻进程、定时任务统一调度系统,以应对开发在进程管理方面遇到的各种复杂问题。组里开发项目,一般来说是一个人承包整个项目,包括调度器设计,还有后台系统。我还有一部分工作,是队列相关的信息,这个由监控同学负责,到时候我后台聚合他的数据一并展示。然后我就遇到问题......
  • node的一部分知识(还在学习)
    node.js一,node最基础一,为什么要学node.js1.可以让每个人都访问到我们的网页2.为了学习vue二,node是什么一款应该程序,是一个软件,可以运行javascript三,node的作用1.开发服务器端应用2.开发工具类应用3.开发桌面端应用四,node的安装之前安装过二,命令的相关知识一,认识命令......