程序填空题:复制二叉树
复制二叉树。
```c++
#include
using namespace std;
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
cin >> ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void Copy(BiTree T, BiTree &NewT)
{
if(T==NULL )
{
@@[NewT=NULL](2);
return;
}
else
{
NewT=new BiTNode;
NewT->data= T->data;
@@[Copy(T->lchild, NewT->lchild)](2);
@@[Copy(T->rchild, NewT->rchild)](2);
}
}
void InOrderTraverse(BiTree T)
{
if(T){
InOrderTraverse(T->lchild);
cout << T->data;
InOrderTraverse(T->rchild);
}
}
int main()
{
BiTree tree,new_tree;
CreateBiTree(tree);
Copy(tree,new_tree);
InOrderTraverse(new_tree);
return 0;
}
```
答案:
第1空:NewT=NULL
第2空:Copy(T->lchild, NewT->lchild)
第3空:Copy(T->rchild, NewT->rchild)
```c++
#include
using namespace std;
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
cin >> ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void Copy(BiTree T, BiTree &NewT)
{
if(T==NULL )
{
@@[NewT=NULL](2);
return;
}
else
{
NewT=new BiTNode;
NewT->data= T->data;
@@[Copy(T->lchild, NewT->lchild)](2);
@@[Copy(T->rchild, NewT->rchild)](2);
}
}
void InOrderTraverse(BiTree T)
{
if(T){
InOrderTraverse(T->lchild);
cout << T->data;
InOrderTraverse(T->rchild);
}
}
int main()
{
BiTree tree,new_tree;
CreateBiTree(tree);
Copy(tree,new_tree);
InOrderTraverse(new_tree);
return 0;
}
```
答案:
第1空:NewT=NULL
第2空:Copy(T->lchild, NewT->lchild)
第3空:Copy(T->rchild, NewT->rchild)