如果我用它来复制二叉树
=
并为BinaryTree& operator=(const BinaryTree &rhs){
if (&rhs == this){
return *this;
}
_Destroy (m_root);
m_root = _Copy ( rhs.m_root);
return *this;
}
运算符设置重载函数,如下所示:
tree_1
然后如果我有两个treetype元素tree_2
和tree_2 = tree_1;
。
当我这样做时
tree_1
我将所有元素从tree_2
复制到tree_2
。
此时,我向tree_1
添加了一个新节点。 tree_1
也会发生变化。
如何设置新的递归复制函数,使tree_2
保持不变,只更改to_fwf
的结构?
答案 0 :(得分:-1)
您仅覆盖节点元素BTNode =运算符
这就是它对根拷贝的工作方式 复制树时[tree_2 = tree_1;]
您正在使用c ++提供的defult copy ctor 使用按位复制(深拷贝) 你需要创建一个副本ctor 对于使用foreach节点的树 所述" ="运营商你好吗?
node *Cpy( root ) {
if (root == NULL ) : return root;
node *temp = new node();
temp->data = root-> data;
temp->left = Cpy( root -> left);
temp->right = Cpy(root -> right);
return temp;
}