二维表转树结构

本文介绍了一个将具有父子关系的数据集合转换为树形结构的方法。通过递归的方式,找到每个节点的子节点并构建完整的树形结构。示例使用C#语言实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            var nodes = new List<Node>()
            {
                new Node { Id = 1, PId = null, Data = "学校"},
                new Node { Id = 2, PId = null, Data = "医院" },
                new Node { Id = 3, PId = 1, Data = "小学" },
                new Node { Id = 4, PId = 3, Data = "一年级" },
                new Node { Id = 6, PId = 4, Data = "张三" },
                new Node { Id = 5, PId = 2, Data = "浙江附属医院" },
            };
          
            ToTree(nodes);
        }

      
        public void ToTree(List<Node> nodes,Node node=null)
        {
            if (node == null)
            {
                var parents = nodes.FindAll(f => f.PId == null);               
                foreach (var item in parents)
                {
                    ToTree(nodes,item);
                }
            }
            else if (nodes.Exists(f => f.PId == node.Id))
            {
                var childs = nodes.FindAll(f => f.PId == node.Id);
                node.Childs = childs;
                nodes.RemoveAll(a => childs.Contains(a));
                foreach (var item in childs)
                {
                    ToTree(nodes, item);
                }
            }
        }
     
    }
    public class Node
    {
        public int? Id { get; set; }
        public string Data { get; set; }
        public int? PId { get; set; }
        public List<Node> Childs { get; set; }
    }

 

转载于:https://www.cnblogs.com/chaeyeon/p/10623088.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值