当前位置: 首页 > news >正文

优秀htm网站专门做纪录片的网站

优秀htm网站,专门做纪录片的网站,群晖外网打开wordpress,网站开发技术服务费合同一、目的 该程序展示了如何将树形结构的数据#xff08;例如家庭成员信息#xff09;转化为一维列表形式#xff0c;以便于存储、展示或操作。 二、流程思路 创建树#xff1a;首先通过 GetDemoTree 创建一个简单的家庭树#xff0c;树的根节点是“爸爸”#xff0c;然…一、目的 该程序展示了如何将树形结构的数据例如家庭成员信息转化为一维列表形式以便于存储、展示或操作。 二、流程思路 创建树首先通过 GetDemoTree 创建一个简单的家庭树树的根节点是“爸爸”然后通过父子关系组织出完整的树结构。递归转换通过 GetListTree 方法将该树结构转化为一维列表。在这个过程中树的每个节点都会被递归遍历并转换为 TreeListPersonTree 形式的条目保存节点的层级信息Level和节点的详细数据Data。结果最终生成的 listTree 是一个平坦的、按层级排列的列表可以用于展示、处理或者进一步的分析。 三、代码展示 using System; using System.Collections.Generic;class PersonTree {public int Id { get; set; }public int? ParentID { get; set; }public string Name { get; set; }public ListPersonTree Children new ListPersonTree(); }class TreeListT where T : class, new() {/// summary/// 树ID从T获取/// /summarypublic string Id { get; set; }/// summary/// 树的父级的ID从T获取/// /summarypublic string PId { get; set; }/// summary/// 树的层级从1开始/// /summarypublic int Level { get; set; }/// summary/// 树的对应节点的实体如果数据量太大了可以不写这个属性把需要的属性例如Name放到外面去/// /summarypublic T Data { get; set; } new T(); }class Program {static void Main(){//获取测试树爸爸 - 我 妹妹 - 儿子 女儿var demoTree GetDemoTree();//把树递归后转化为一维列表ListTreeListPersonTree listTree GetListTree(demoTree);;}private static ListTreeListPersonTree GetListTree(PersonTree demoTree, int level 1){ListTreeListPersonTree output new ListTreeListPersonTree();// 每次递归都会new出output因此不会反复添加根节点output.Add(new TreeListPersonTree{Id demoTree.Id.ToString(),PId demoTree.ParentID.ToString(),Level level,Data demoTree});// 如果有子节点递归调用增加层级if (demoTree.Children ! null){foreach (var item in demoTree.Children){output.AddRange(GetListTree(item, level 1)); // 递归调用时传递新的层级}}return output;}public static PersonTree GetDemoTree(){// 创建爸爸节点PersonTree dad new PersonTree{Id 1,Name 爸爸,ParentID null};// 创建我节点PersonTree me new PersonTree{Id 2,Name 我,ParentID dad.Id};// 创建妹妹节点PersonTree sister new PersonTree{Id 3,Name 妹妹,ParentID dad.Id};// 创建儿子节点PersonTree son new PersonTree{Id 4,Name 儿子,ParentID me.Id};// 创建女儿节点PersonTree daughter new PersonTree{Id 5,Name 女儿,ParentID me.Id};// 将儿子和女儿添加为我的子节点me.Children.Add(son);me.Children.Add(daughter);// 将我和妹妹添加为爸爸的子节点dad.Children.Add(me);dad.Children.Add(sister);return dad;} }【思考】假如PersonTree 没有 ParentID 这个字段 应该如何递归生成一维列表呢 【答案】递归方法多加一个Parent字段 private static ListTreeListPersonTree GetListTree(PersonTree demoTree, int level 1, string parentId null) {ListTreeListPersonTree output new ListTreeListPersonTree();// 每次递归都会new出output因此不会反复添加根节点output.Add(new TreeListPersonTree{Id demoTree.Id.ToString(),PId parentId,Level level,Data demoTree});// 如果有子节点递归调用增加层级if (demoTree.Children ! null){foreach (var item in demoTree.Children){output.AddRange(GetListTree(item, level 1, demoTree.Id.ToString())); // 递归调用时传递新的父ID}}return output; }
http://www.w-s-a.com/news/215/

相关文章:

  • 视频公司的网站设计工图网
  • 免费快速网站十八个免费的舆情网站