c ++复制二叉树

时间:2016-06-26 07:51:00

标签: c++

如果我用它来复制二叉树

=

并为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_2tree_2 = tree_1;

当我这样做时

tree_1

我将所有元素从tree_2复制到tree_2。 此时,我向tree_1添加了一个新节点。 tree_1也会发生变化。 如何设置新的递归复制函数,使tree_2保持不变,只更改to_fwf的结构?

1 个答案:

答案 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;
}