Copie todos los padres e hijos de treeView a otro treeView c # WinForms

Estoy intentando copiar todo el árbol (exactamente todos los nodos) de una vista de árbol (completamente) a otra vista de árbol usando este código:

        TreeNodeCollection myTreeNodeCollection = treeView1.Nodes;

        TreeNode[] myTreeNodeArray = new TreeNode[treeView1.Nodes.Count];

        treeView1.Nodes.CopyTo(myTreeNodeArray, 0);

        treeView2.Nodes.AddRange(myTreeNodeArray);

Pero esto no me permite hacerlo, ¡pide eliminar los nodos en la vista de árbol de origen o usar Clone! ¿Cómo puedo hacer eso? No quiero que mi vista de árbol de origen pierda nada en este proceso.

** ACTUALIZACIÓN ** Ok chicos, encontré un código complicado (¡para mí!) Pero ¿cómo puedo usar esto?

    public static T DeepTreeCopy<T>(T obj)
    {
        object result = null;
        using (var ms = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            result = (T)formatter.Deserialize(ms); ms.Close();
        }
        return (T)result;
    } 

Respuestas a la pregunta(4)

Su respuesta a la pregunta