C# 将数据组合为树形结构(List<Tree>)的通用方法

发布时间:2026/10/21 19:43:44

C# 将数据组合为树形结构(List<Tree>)的通用方法 目录步骤 1: 定义树节点类步骤 2: 构建树方法 1: 使用递归方法 2: 使用迭代广度优先搜索步骤 3: 使用树结构如果您喜欢此文章请收藏、点赞、评论谢谢祝您快乐每一天。在C#中将数据组合为树形结构通常涉及到创建树形节点类并使用递归或迭代方法来构建树。下面是一个通用的方法通过这种方式可以创建一个树形结构例如一个组织架构或文件系统树。步骤 1: 定义树节点类首先定义一个树节点类该类通常包含数据字段和指向子节点的引用。public class TreeNodeT{public T Data { get; set; }public ListTreeNodeT Children { get; set; }public TreeNode(T data){Data data;Children new ListTreeNodeT();}// 可选添加方法以添加子节点public void AddChild(TreeNodeT child){Children.Add(child);}}步骤 2: 构建树根据具体的数据和结构你可以使用递归或迭代方法来构建树。这里展示两种常见的方法方法 1: 使用递归假设你有一个数据源例如一个列表或数据库查询结果并且每个节点都有一个指向其父节点的ID。你可以使用递归来构建树。public class NodeData{public int Id { get; set; }public int? ParentId { get; set; } // 假设这是父节点的ID如果是根节点则为null或0public string Name { get; set; } // 示例数据字段}public static TreeNodeNodeData BuildTree(ListNodeData nodes){var lookup nodes.ToLookup(n n.ParentId); // 使用Lookup来快速查找子节点return BuildTreeRecursive(nodes, lookup, null); // 从ParentId为null的节点开始构建树}private static TreeNodeNodeData BuildTreeRecursive(ListNodeData nodes, ILookupint?, NodeData lookup, int? parentId){var currentNodes lookup[parentId].ToList(); // 获取当前父节点的所有子节点var treeNode new TreeNodeNodeData(currentNodes.First()); // 创建一个树节点使用当前子节点的第一个数据项作为节点数据如果有多个可以根据需要选择foreach (var node in currentNodes){treeNode.AddChild(BuildTreeRecursive(nodes, lookup, node.Id)); // 递归构建子树}return treeNode;}方法 2: 使用迭代广度优先搜索如果你更喜欢使用迭代方法可以尝试广度优先搜索BFS来实现。这通常涉及到队列的使用。public static TreeNodeNodeData BuildTreeIterative(ListNodeData nodes){var root new TreeNodeNodeData(nodes.First(n n.ParentId null)); // 假设根节点是ParentId为null的节点var queue new QueueTreeNodeNodeData(); // 用于BFS的队列queue.Enqueue(root); // 将根节点加入队列while (queue.Count 0){var current queue.Dequeue(); // 取出当前节点foreach (var childData in nodes.Where(n n.ParentId current.Data.Id)) // 找到所有当前节点的子节点数据项{var childNode new TreeNodeNodeData(childData); // 为每个子节点创建一个树节点实例current.AddChild(childNode); // 将子节点添加到当前节点下queue.Enqueue(childNode); // 将子节点加入队列以供后续处理}}return root; // 返回根节点整个树已构建完成}步骤 3: 使用树结构现在你可以使用构建的树结构进行各种操作如遍历、搜索或显示树形结构等。例如遍历整个树public static void TraverseTree(TreeNodeNodeData node, ActionTreeNodeNodeData action){action(node); // 对当前节点执行操作foreach (var child in node.Children) // 递归遍历所有子节点{TraverseTree(child, action);}}通过这种方式你可以根据具体的数据和需求灵活地构建和使用树形结构如果您喜欢此文章请收藏、点赞、评论谢谢祝您快乐每一天。
延伸阅读

更多相关文章

2026/10/21 16:05:46

Extracting Disaster Impacts and Impact Related Locations in Social Media Posts Using Large Langua...

文章主要内容与创新点总结 一、主要内容 该研究聚焦于利用大型语言模型(LLMs)从灾害相关社交媒体帖子中提取灾害影响类型及受影响地点,以解决传统权威数据(如传感器、遥感影像)在灾害响应中存在的地理时间信息缺口问题。 研究背景:自然灾害常造成严重人员伤亡和基础设施…

2026/10/22 7:47:50

哈夫曼树实验报告全解析:C语言实现、WPL计算与避坑指南

简介:这份PDF实验报告面向计算机专业学生与数据结构初学者,围绕哈夫曼树与哈夫曼编码的C语言实现展开,帮助读者理解变长前缀编码如何提升信道利用率、降低传输成本。报告完整覆盖初始化、编码、译码、打印代码文件与打印哈夫曼树五大功能模块…

2026/10/22 7:47:50

多模态大模型实战:模态对齐、数据清洗与训练优化全解析

1. 先想清楚:多模态大模型到底难在哪 这几年,只要聊到大模型,多模态就绕不开。图像分类、目标检测、图文生成、视觉问答、跨模态搜索,几乎所有场景都希望一个模型能同时看懂文字和图像。我最初以为多模态大模型就是把视觉编码器和…

2026/10/22 7:47:50

哈夫曼树实验报告避坑指南:从建树到编码表与WPL验证

简介:这份PDF实验报告面向计算机专业学生及数据结构初学者,围绕哈夫曼树与哈夫曼编码的C语言实现展开,帮助读者理解变长前缀编码在数据压缩与通信中的核心作用。报告完整覆盖初始化、编码、译码、打印代码文件与打印哈夫曼树五大功能模块&…

2026/10/22 7:47:50

深度学习驱动热带气旋预测:技术架构与实验模型解析

做气象预测的人这两年应该都感受到一个明显的变化:以前聊起热带气旋,大家张口闭口都是数值模式、物理参数化、超级计算机,可最近再聚,越来越多人在讨论“能不能把深度学习直接塞进预报流程里”。我接触过好几个做这方面尝试的团队…

2026/10/22 7:47:50

太赫兹成像与光谱医疗应用综述:技术路线、参数边界与避坑指南

简介:这份PDF综述面向生物医学工程、医学影像及中医药研究方向的科研人员与研究生,系统梳理了太赫兹成像与光谱技术在医疗领域的应用现状。内容围绕太赫兹波0.1至10 THz频段的宽带光谱分析、高分辨率与低能耗特性展开,重点阐述其在人体皮肤组…

2026/10/22 7:42:49

智慧车站建设落地指南:从边缘计算到联动规则实践

简介:《智慧城市轨道交通智慧车站系统建设方案》面向轨道交通行业信息化规划与智慧城市项目方案编写人员,提供完整的智慧车站建设参考。方案围绕5G云网一体化的大数据智慧地铁应用平台,系统阐述智慧运营、智慧服务、智慧维保三大建设内容&…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑