void CopySubTree(Vertex<T>* vertex, Vertex<T>* second_vertex) { if (second_vertex->left_son != &null_vertex) { Vertex<T>* left_son = new Vertex<T>(second_vertex->left_son->element); vertex->left_son = left_son; left_son->father = vertex; CopySubTree(left_son, second_vertex->left_son); } if (second_vertex->right_son != &null_vertex) { Vertex<T>* right_son = new Vertex<T>(second_vertex->right_son->element); vertex->right_son = right_son; right_son->father = vertex; CopySubTree(right_son, second_vertex->right_son); } }
void CDataNode::Copy( const CDataNode& root ) {GUCEF_TRACE; *this = root; CopySubTree( root ); }
void CopyTree(const Tree& tree) { if (tree.root != &null_vertex) { root = new Vertex<T>(tree.root->element); root->father = &null_vertex; CopySubTree(root, tree.root); } else { root = &null_vertex; } }