inline
typename StaticCrsGraph< DataType , Arg1Type , Arg2Type , SizeType >::HostMirror
create_mirror_view( const StaticCrsGraph<DataType,Arg1Type,Arg2Type,SizeType > & view ,
                    typename Impl::enable_if< ! ViewTraits<DataType,Arg1Type,Arg2Type,void>::is_hostspace >::type * = 0 )
{
  return create_mirror( view );
}
int main()
{
    mynode *root;
    root = (mynode *)0;
    int depth; 
    add(&root, 5);
    add(&root, 4);
    add(&root, 6);
    add(&root, 9);
    add(&root, 14);
    add(&root, 3);
    add(&root, 1);
    add(&root, 2);
    
    printf("\n\nIn-order transversal is: ");
    inorder(root);
    create_mirror(root);
    
    printf("\n\nIn-order transversal after mirroring is: ");
    inorder(root);
    
    
    getch();
    return 0;    
}
void create_mirror(mynode *root)
{
    mynode *temp;
    if(root == (mynode *)0)
            return;
    else
    {
            create_mirror(root -> left);
            create_mirror(root -> right);
            
            //Swap the pointers in this node
            temp = root -> left;
            root -> left = root -> right;
            root -> right = temp;            
    }
 
 
}
inline
typename StaticCrsGraph< DataType , Arg1Type , Arg2Type , SizeType >::HostMirror
create_mirror( const StaticCrsGraph<DataType,Arg1Type,Arg2Type,SizeType > & view )
{
  // Force copy:
  //typedef Impl::ViewAssignment< Impl::ViewDefault > alloc ; // unused
  typedef StaticCrsGraph< DataType , Arg1Type , Arg2Type , SizeType >  staticcrsgraph_type ;

  typename staticcrsgraph_type::HostMirror               tmp ;
  typename staticcrsgraph_type::row_map_type::HostMirror tmp_row_map = create_mirror( view.row_map);
  typename staticcrsgraph_type::row_block_type::HostMirror tmp_row_block_offsets = create_mirror( view.row_block_offsets);

  // Allocation to match:
  tmp.row_map = tmp_row_map ; // Assignment of 'const' from 'non-const'
  tmp.entries = create_mirror( view.entries );
  tmp.row_block_offsets = tmp_row_block_offsets ; // Assignment of 'const' from 'non-const'

  // Deep copy:
  deep_copy( tmp_row_map , view.row_map );
  deep_copy( tmp.entries , view.entries );
  deep_copy( tmp_row_block_offsets , view.row_block_offsets );

  return tmp ;
}