public void AddNode(string name, string[] isclass) { if (isclass.Length == 0) { names.Add(name); names.Sort(); } else { string[] newclasses = new string[isclass.Length - 1]; Array.ConstrainedCopy(isclass, 1, newclasses, 0, isclass.Length - 1); switch (isclass[0]) { case "upper": if (Upper == null) { Upper = new CasteNode(); } Upper.AddNode(name, newclasses); break; case "middle": if (Middle == null) { Middle = new CasteNode(); } Middle.AddNode(name, newclasses); break; case "lower": if (Lower == null) { Lower = new CasteNode(); } Lower.AddNode(name, newclasses); break; } } }
static void Main(string[] args) { int cases = Convert.ToInt32(Console.ReadLine()); while (cases > 0) { int familymemcount = Convert.ToInt32(Console.ReadLine()); CasteNode familyRoot = new CasteNode(); while (familymemcount > 0) { string[] line = Console.ReadLine().Split(' '); string name = line[0].Trim(':'); string[] heirarchy = line[1].Split('-'); familyRoot.AddNode(name, heirarchy); familymemcount--; } StringBuilder sb = new StringBuilder(); familyRoot.InorderPrint(sb); Console.Write(sb.ToString()); Console.WriteLine("=============================="); cases--; } Console.ReadLine(); }