Last active
March 1, 2023 07:01
-
-
Save zhaopan/f5e3c8f1f00ee5ffad801bcd05c41bfd to your computer and use it in GitHub Desktop.
MaxDepth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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