Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. class Program
  2. {
  3. class Node
  4. {
  5. public int Id;
  6. public Node Parent;
  7. }
  8.  
  9. class TreeNode
  10. {
  11. public int Id;
  12. public List<TreeNode> Nodes;
  13.  
  14. public override string ToString()
  15. {
  16. return $"(Node {Id} ({string.Join(",", Nodes.Select(node => node.ToString()))}))";
  17. }
  18. }
  19.  
  20. static void Main(string[] args)
  21. {
  22. var node1 = new Node { Id = 1, Parent = null };
  23. var node2 = new Node { Id = 2, Parent = node1 };
  24. var node3 = new Node { Id = 3, Parent = node2 };
  25. var node4 = new Node { Id = 4, Parent = node2 };
  26. var node5 = new Node { Id = 5, Parent = node2 };
  27. var node6 = new Node { Id = 6, Parent = node1 };
  28.  
  29. var nodes = new[] { node1, node2, node3, node4, node5, node6 };
  30.  
  31. var dict = new Dictionary<int, TreeNode>();
  32. TreeNode root = null;
  33. foreach (var node in nodes)
  34. {
  35. var treeNode = default(TreeNode);
  36. if (node.Parent == null)
  37. {
  38.  
  39. if (dict.ContainsKey(node.Id))
  40. {
  41. treeNode = dict[node.Id];
  42. }
  43. else
  44. {
  45. treeNode = new TreeNode { Id = node.Id, Nodes = new List<TreeNode>() };
  46. dict.Add(node.Id, treeNode);
  47. }
  48. root = treeNode;
  49. continue;
  50. }
  51. if (dict.ContainsKey(node.Id))
  52. {
  53. treeNode = dict[node.Id];
  54. }
  55. else
  56. {
  57. treeNode = new TreeNode { Id = node.Id, Nodes = new List<TreeNode>() };
  58. dict.Add(node.Id, treeNode);
  59. }
  60. if (dict.ContainsKey(node.Parent.Id))
  61. {
  62. var treeParentNode = dict[node.Parent.Id];
  63. treeParentNode.Nodes.Add(treeNode);
  64. }
  65. else
  66. {
  67. var treeParent = new TreeNode { Id = node.Parent.Id, Nodes = new List<TreeNode> { treeNode } };
  68. dict.Add(node.Id, treeParent);
  69. }
  70. }
  71.  
  72. Console.WriteLine(root.ToString());
  73.  
  74.  
  75.  
  76.  
  77.  
  78. return;
  79. }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement