读书人

C++数据结构 关于二叉树的复制函数解决

发布时间: 2012-06-24 18:32:37 作者: rapoo

C++数据结构 关于二叉树的复制函数
template<class T>//模板类
BinaryTree Node<T>*BinaryTree Node::copy()const//二叉树的结点类的复制函数
{
BinaryTree Node<T>*newLeft,*newRight;//建立新的左右子树
if (Lchild!=NULL)//左孩子指针不为空
{
newLeft=Lchild->copy();//这里就不清楚怎么运行的了?到底怎么递归复制的?举例说明
}
else newLeft=NULL;
if (Rchild!=NULL)
{
newRight=Rchild->copy();
}
else newRight=NULL;
BinaryTree Node<T>*newptr;//建立新结点
newptr=new BinaryTree Node<T>(data,newLeft,newRight);
assert(newptr!=NULL);
return newptr;
}
主要就是举例说明 到底怎么递归复制左子树的?

[解决办法]
递归创建的顺序。加断点,然后自己跟一遍就知道递归是什么样的执行顺序了
[解决办法]

C/C++ code
楼上搞错了对于节点类,根本不必递归对于二叉树类,则需要伪代码如下:void BiTree::copy(BiNode* &new_root , BiNode* old_root) const{BiNode* cur=old_root;//求解根节点new_root= new BiNode(cur->data);if(cur->left){copy(new_root->left, old_root->left);}if(cur->right){copy(new_root->right, old_root->right);}} 

读书人网 >C++

热点推荐