尝试复制二叉搜索树的错误

时间:2014-04-29 22:55:56

标签: c++ copy binary-tree binary-search-tree copy-constructor

这是我的复制构造函数,重载赋值运算符和复制函数,有谁知道为什么这3个不能正常工作?

复制功能:

template <class T>
void BSTType<T>::copy(BTNodeType<T>*& node1, BTNodeType<T>* node2){
    if(node2==NULL)
        node1=NULL;
    else{
        node1=new BTNodeType<T>;
        node1->item=node2->item;
        copy(node1->left, node2->left);
        copy(node1->right, node2->right);
    }
}

调用复制功能的复制构造函数:

template <class T>
BSTType<T>::BSTType(const BSTType<T>& tree){
    if(tree.root==NULL)
        root=NULL;
    else{
        copy(root, tree.root);
    }
}

重载的赋值运算符也调用了复制函数:

template <class T>
const BSTType<T>& BSTType<T>::operator=(const BSTType<T>& tree){
    if(this!=&tree){
        if(root!=NULL)
            destroy(root);
        if(tree.root==NULL)
            root=NULL;
        else
            copy(root, tree.root);
    }
    return *this;
}

0 个答案:

没有答案