Skip to content

Instantly share code, notes, and snippets.

@zhaopan
Last active March 1, 2023 07:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhaopan/f5e3c8f1f00ee5ffad801bcd05c41bfd to your computer and use it in GitHub Desktop.
Save zhaopan/f5e3c8f1f00ee5ffad801bcd05c41bfd to your computer and use it in GitHub Desktop.
MaxDepth
using System;
using System.Collections.Generic;
using System.Linq;
/// <summary>
///
/// </summary>
namespace ConsoleApp2
{
/// <summary>
///
/// </summary>
internal class Program
{
/// <summary>
///
/// </summary>
/// <param name="args"></param>
private static void Main(string[] args)
{
var source = new List<Nodes>();
source.Add(new Nodes() { Code = "A", ParentCode = "-1" });
source.Add(new Nodes() { Code = "B", ParentCode = "-1" });
source.Add(new Nodes() { Code = "C", ParentCode = "-1" });
source.Add(new Nodes() { Code = "D", ParentCode = "-1" });
source.Add(new Nodes() { Code = "A1", ParentCode = "A" });
source.Add(new Nodes() { Code = "A2", ParentCode = "A" });
source.Add(new Nodes() { Code = "B1", ParentCode = "B" });
source.Add(new Nodes() { Code = "B2", ParentCode = "B" });
source.Add(new Nodes() { Code = "B4", ParentCode = "B" });
source.Add(new Nodes() { Code = "B4", ParentCode = "B" });
source.Add(new Nodes() { Code = "C1", ParentCode = "C" });
source.Add(new Nodes() { Code = "C2", ParentCode = "C" });
source.Add(new Nodes() { Code = "C3", ParentCode = "C" });
source.Add(new Nodes() { Code = "C4", ParentCode = "C" });
source.Add(new Nodes() { Code = "C5", ParentCode = "C" });
source.Add(new Nodes() { Code = "D1", ParentCode = "D" });
source.Add(new Nodes() { Code = "D2", ParentCode = "D" });
source.Add(new Nodes() { Code = "D3", ParentCode = "D" });
source.Add(new Nodes() { Code = "D4", ParentCode = "D" });
source.Add(new Nodes() { Code = "D5", ParentCode = "D" });
source.Add(new Nodes() { Code = "D6", ParentCode = "D" });
var nodeList = MaxDepth(source, "-1");
MaxDFS(nodeList);
Console.WriteLine("Hello World!");
}
/// <summary>
///
/// </summary>
/// <param name="source"></param>
/// <param name="parentCode"></param>
/// <returns></returns>
public static List<Nodes> MaxDepth(List<Nodes> source
, string parentCode)
{
var result = new List<Nodes>();
var children = source.Where(t => t.ParentCode == parentCode).ToList();
foreach (var range in children)
{
var node = new Nodes()
{
Code = range.Code,
ParentCode = range.ParentCode,
Items = MaxDepth(source, range.Code)
};
result.Add(node);
}
return result;
}
/// <summary>
///
/// </summary>
/// <param name="source"></param>
/// <param name="parentCode"></param>
/// <returns></returns>
public static void MaxDFS(List<Nodes> source)
{
foreach (var item in source)
{
Console.WriteLine($"{item.Code.PadLeft(6, '0')}-----{item.ParentCode.PadLeft(6, '0')}");
if (item.Items != null)
{
MaxDFS(item.Items);
}
}
}
}
/// <summary>
///
/// </summary>
public class Nodes
{
/// <summary>
///
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public string ParentCode { get; set; }
/// <summary>
///
/// </summary>
public List<Nodes> Items { get; set; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment