• 树递归写法ref实现


    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace ConsoleAppTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                var aa = new AA();
                var tree = new Tree() { Id = 1, Name = "1" };
                aa.CreateTree(ref tree);
                Console.WriteLine();
            }
        }
    
        public class Tree
        {
            public Tree()
            {
                Childrens = new List<Tree>();
            }
            public int Id { get; set; }
            public string Name { get; set; }
            public List<Tree> Childrens { get; set; }
    
    
        }
    
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Fid { get; set; }
        }
    
        public class AA
        {
            List<Product> Products = new List<Product>() {
                    new Product(){Id=2,Name="2",Fid=1},
                    new Product(){Id=3,Name="3",Fid=1},
                    new Product(){Id=4,Name="4",Fid=2},
                    new Product(){Id=5,Name="5",Fid=3},
                    new Product(){Id=6,Name="6",Fid=4},
                    new Product(){Id=7,Name="7",Fid=5},
                    new Product(){Id=8,Name="8",Fid=6},
                    new Product(){Id=9,Name="9",Fid=8},
                };
    
            public void CreateTree(ref Tree tree)
            {
                var id = tree.Id;
                var list = Products.Where(x => x.Fid == id).ToList();
                if (list.Any())
                {
                    foreach (var item in Products.Where(x => x.Fid == id).ToList())
                    {
                        var treeSon = new Tree
                        {
                            Id = item.Id,
                            Name = item.Name
                        };
                        tree.Childrens.Add(treeSon);
                        Console.WriteLine($"{tree.Id}");
                        CreateTree(ref treeSon);
                    }
                }
                else
                {
                    Console.WriteLine($"{tree.Id}");
                }
            }
        }
    }

    运行结果

    .

  • 相关阅读:
    MySQL5.7初始密码查看及重置
    ps top kill
    Linux基础知识[2]【延迟及定时机制】
    大数加减运算
    字符串分隔
    打印NxN的矩阵
    交叉排序
    去除重复字符并排序
    大数求差——(华为实习招聘机试题)
    图解TCP-IP协议
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/10493310.html
Copyright © 2020-2023  润新知