Re: [Dev-C++] Copy Constructor for a BST Class
Open Source C & C++ IDE for Windows
Brought to you by:
claplace
|
From: Per W. <pw...@ia...> - 2003-06-08 16:04:02
|
Slight clarification.
Your copy constructor doesn't have to be prepared to release any old
memory - but should be prepared to assign NULL values.
However, if you want to use copyTree() to implement an assignment
operator, then you must also think about releasing an old tree.
/Per W
On Sun, 8 Jun 2003, Per Westermark wrote:
> Your copy constructor - and your copyTree() method - would not work.
>
> What if you make assign to a non-empty tree. In that case, you have to
> release the old tree before assigning the new.
>
> Also, you only handle the case where origTree does contain anything. If it
> doesn't, then the target tree should have the same pointer set to NULL.
>
> /Per W
>
> On Sun, 8 Jun 2003, Socha, David F wrote:
>
> > I am using the most current version of DEV C++
> >
> > This is the code I am currently using for copy constructor on my Binary Search Tree code. I don't believe this should cause any problems but if anyone can give me help on this I would greatly appricate it. Keep in mind that the copy Tree function works on a recursive basis
> >
> >
> >
> > template <typename T> BST<T>::BST(const BST& origTree){ //copy constructor
> >
> > if(origTree.root){
> >
> > copyTree(origTree.root, root);
> >
> > }
> >
> > }
> >
> >
> >
> >
> >
> > /****************************************************************************
> >
> > copyTree function
> >
> > Used by the copy constructor to copy the tree
> >
> > Sent: pointer to the original node, pointer to the node being copied to
> >
> > Returns: Nothing
> >
> > Works by: Creating a new node on the tree being copied, copy the data to the
> >
> > node, checks to see if a left node exists on the tree, if yes
> >
> > repeat the process using on the left node, if not, do nothing. Then checks
> >
> > the right, if it exists repeat process on the right side, if not, do nothing
> >
> > NOTE: This function is a recursive process
> >
> > ****************************************************************************/
> >
> >
> >
> > template<typename T> void BST<T>::copyTree(Node* origNode, Node* copyNode){
> >
> > copyNode = new Node(origNode->data);
> >
> >
> >
> > if(origNode->left){
> >
> > copyTree(origNode->left, copyNode->left);
> >
> > }
> >
> >
> >
> > if(origNode->right){
> >
> > copyTree(origNode->right, copyNode->right);
> >
> > }
> >
> > }
> >
> > //End copyTree
> >
> > Thanks for all the help,
> >
> > David Socha
> >
> >
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: Etnus, makers of TotalView, The best
> > thread debugger on the planet. Designed with thread debugging features
> > you've never dreamed of, try TotalView 6 free at www.etnus.com.
> > _______________________________________________
> > Dev-cpp-users mailing list
> > Dev...@li...
> > TO UNSUBSCRIBE: http://www.noicys.cjb.net/devcpp/ub.htm
> > https://lists.sourceforge.net/lists/listinfo/dev-cpp-users
> >
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Etnus, makers of TotalView, The best
> thread debugger on the planet. Designed with thread debugging features
> you've never dreamed of, try TotalView 6 free at www.etnus.com.
> _______________________________________________
> Dev-cpp-users mailing list
> Dev...@li...
> TO UNSUBSCRIBE: http://www.noicys.cjb.net/devcpp/ub.htm
> https://lists.sourceforge.net/lists/listinfo/dev-cpp-users
>
|