Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- class Node
- {
- public int Id;
- public Node Parent;
- }
- class TreeNode
- {
- public int Id;
- public List<TreeNode> Nodes;
- public override string ToString()
- {
- return $"(Node {Id} ({string.Join(",", Nodes.Select(node => node.ToString()))}))";
- }
- }
- static void Main(string[] args)
- {
- var node1 = new Node { Id = 1, Parent = null };
- var node2 = new Node { Id = 2, Parent = node1 };
- var node3 = new Node { Id = 3, Parent = node2 };
- var node4 = new Node { Id = 4, Parent = node2 };
- var node5 = new Node { Id = 5, Parent = node2 };
- var node6 = new Node { Id = 6, Parent = node1 };
- var nodes = new[] { node1, node2, node3, node4, node5, node6 };
- var dict = new Dictionary<int, TreeNode>();
- TreeNode root = null;
- foreach (var node in nodes)
- {
- var treeNode = default(TreeNode);
- if (node.Parent == null)
- {
- if (dict.ContainsKey(node.Id))
- {
- treeNode = dict[node.Id];
- }
- else
- {
- treeNode = new TreeNode { Id = node.Id, Nodes = new List<TreeNode>() };
- dict.Add(node.Id, treeNode);
- }
- root = treeNode;
- continue;
- }
- if (dict.ContainsKey(node.Id))
- {
- treeNode = dict[node.Id];
- }
- else
- {
- treeNode = new TreeNode { Id = node.Id, Nodes = new List<TreeNode>() };
- dict.Add(node.Id, treeNode);
- }
- if (dict.ContainsKey(node.Parent.Id))
- {
- var treeParentNode = dict[node.Parent.Id];
- treeParentNode.Nodes.Add(treeNode);
- }
- else
- {
- var treeParent = new TreeNode { Id = node.Parent.Id, Nodes = new List<TreeNode> { treeNode } };
- dict.Add(node.Id, treeParent);
- }
- }
- Console.WriteLine(root.ToString());
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement