如何解决如何在C ++中为BST实现复制构造函数和重载的等于运算符
我需要使用C ++为BST实现各种功能。这些方法中的两个是复制构造函数和重载的等于运算符,我对它们的确切逻辑以及如何采用该逻辑并将其实际转换为代码感到困惑。
到目前为止,这是我认为逻辑应该起作用的方式:
- 将调用复制构造函数,并使用等于重载运算符将复制树设置为与本地树相等。
- 同等重载方法逐步访问树的每个节点,并复制每个节点的确切属性,以使树完全相同,这有望产生更深的副本。
这是我到目前为止尝试过的。
template <class DataType>
class BSTree
{
private:
// You may NOT add any data members
struct node;
typedef node* nodePtr;
struct node
{
DataType element;
nodePtr right;
nodePtr left;
};
int count;
nodePtr root;
public:
// Default constructor
BSTree()
{
root = NULL;
}
// Copy constructor
BSTree(const BSTree<DataType>& copyTree)
{
this = copyTree; //utilizes the overloaded = operator
}
// Equal overload
const BSTree& operator =(const BSTree& rhs)
{
recursiveStepThrough(rhs,root);
}
void recursiveStepThrough(const BSTree& rhs,nodePtr curr) {
if (curr != NULL) {
if (curr->left != NULL) { recursiveStepThrough(rhs,curr->left); }
nodePtr temp = new node;
rhs->element = curr->element;
rhs->right = curr->right;
rhs->left = curr->left;
if (curr->right != NULL) { recursiveStepThrough(rhs,curr->right); }
}
}
我仅获得私有数据成员和方法标头。我可以创建任何我希望的新功能,但是我希望将其保持在讲师提供给我的功能上。在逻辑或实现方面的任何帮助都会有很大帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。