和二叉树的建立相似
代码入下:
#include<bits/stdc++.h>
#pragma execution_character_set("utf-8")
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void createBiTree(BiTree &t){
char c;
cin>>c;
if(c=='#')
t = NULL;
else{
t = new BiTNode;
t->data = c;
createBiTree(t->lchild);
createBiTree(t->rchild);
}
}
void Copy(BiTree t,BiTree &newt){
if(t==NULL){
newt = NULL;
return;
}
else{
newt = new BiTNode;
newt->data = t->data;
Copy(t->lchild,newt->lchild);
Copy(t->rchild,newt->rchild);
}
}
void PreOrder(BiTree t){
if(t==NULL)
return;
cout<<t->data<<' ';
PreOrder(t->lchild);
PreOrder(t->rchild);
}
int main(){
BiTree t,newt;
createBiTree(t);
Copy(t,newt);
cout<<"模版二叉树先序遍历序列为:";
PreOrder(t);
cout<<endl<<"复制后的二叉树先序遍历序列为:";
PreOrder(newt);
return 0;
}
测试结果:
假设我们要建立一个如下图所示的二叉树,#代表空节点,按照前序遍历顺序二叉树表示为:ab##c##
运行结果如下: