Example #1
0
 public static Node CopyTree(Node head, Node parent = null)
 {
     Node result = new Node { value = head.value, parent = parent };
     foreach (var child in head.children)
         result.children.Add(CopyTree(child, result));
     return result;
 }
Example #2
0
 public static void MergeTrees(Node head1, Node head2)
 {
     foreach (var child2 in head2.children)
     {
         Node child1 = head1.children.FirstOrDefault(node => node.value == child2.value);
         if (child1 != null)
             MergeTrees(child1, child2);
         else
         {
             head1.Add(child2);
             MergeTrees(head1.children.Last(), child2);
         }
     }
 }
Example #3
0
        public static void Main(string[] args)
        {
            Node head1 = new Node { value = "A" };
            head1.Add("B", "C", "F");
            head1["C"].Add("D", "E");
            head1["F"].Add("G", "H", "I");

            Node head2 = new Node { value = "A" };
            head2.Add("B", "C");
            head2["C"].Add("D", "K", "L");

            Node result = CopyTree(head1);
            MergeTrees(result, head2);
        }
Example #4
0
        public static Node ToNode(TreeNode source)
        {
            Node n = new Node();
               n.value = source.Text;
               if (source.Nodes.Count==0)
               {
               return n;
               }
               else
               {
               for (int i = 0; i < source.Nodes.Count-1; i++)
               {
                  // n.children.Add(ToNode(source.Nodes(i)));

               }
               }

               return n;
        }