到目前为止,我编写的代码是:
void copyInOrder(TNode *orgTree, Tnode *& copyTree){
if(orgTree !=NULL){
copyInOrder(orgTree->left_link);
//create leftmost node of tree but how to link to parent
copyInOrder(orgTree->right_link);
}
}
我不知道如何按顺序链接到父节点和节点。
发布于 2010-10-13 04:46:30
我想应该是这样的。
void copyInOrder(TNode *orgTree, Tnode *& copyTree){
if(orgTree !=NULL){
//left side
TNode newLeftNode = cloneNode(orgTree->left_link);
copyTree->left_link = newLeftNode;
copyInOrder(orgTree->left_link, copyTree->left_link);
//right side
TNode newRightNode = cloneNode(orgTree->right_link);
copyTree->right_link = newRightNode;
copyInOrder(orgTree->right_link, copyTree->right_link);
}
}
发布于 2011-06-01 18:13:58
tnode *copy(tnode *root) {
tnode *new_root;
if(root!=NULL){
new_root=new tnode;
new_root->data=root->data;
new_root->lchild=copy(root->lchild);
new_root->rchild=copy(root->rchild);
} else return NULL;
return new_root;
}
发布于 2019-04-30 06:03:07
这是一个有效且简单的递归方法。
Tnode* CopyInOrder(Tnode* root){
if(root == NULL){return NULL;}
else{
Tnode* temp = new Tnode;
temp -> data = root -> data;
temp -> left = copyInOrder(root -> left);
temp -> right = copyInOrder(root -> right);
return temp;
}
}
https://stackoverflow.com/questions/3918811
复制相似问题