0001 template <typename T> Rank clean(BNP<T> x) { //析构子树x 0002 if (!x) return 0; 0003 Rank n = clean(x->lc) + clean(x->rc) + 1; //递归析构左、右子树 0004 delete x; return n; 0005 } //clean 0006 0007 template <typename T> Rank BinTree<T>::remove(BNP<T> x) { //删除子树x 0008 if (!x) return 0; 0009 FromParentTo(x) = nullptr; //切断来自父节点的引用 0010 if (x->parent) x->parent->updateHeightAbove(); //更新祖先们的高度 0011 Rank n = clean(x); _size -= n; return n; //析构子树x 0012 } //remove