0001 template <typename T> BNP<T> clone(BNP<T> t) { //深复制 0002 if (!t) return nullptr; 0003 return new BinNode<T>(t->data, nullptr, clone(t->lc), clone(t->rc), t->height, t->color); 0004 } //clone: p ~ Parent; t ~ source Tree 0005 template <typename T> BinTree<T>::BinTree(BNP<T> t) //复制子树 0006 { _root = clone(t); _size = t->size(); } 0007 template <typename T> BinTree<T>::BinTree(const BinTree<T>& t) //复制全树 0008 { _root = clone(t._root); _size = t.size(); } 0009 template <typename T> BinTree<T>& BinTree<T>::operator=(const BinTree<T>& t) { //赋值 0010 if (_root != t._root) 0011 { remove(_root); _root = clone(t._root); _size = t.size(); } 0012 return *this; 0013 } //operator=