#include <bits/stdc++.h>
using namespace std;
typedef struct node {
char data;
struct node *lchild;
struct node *rchild;
} Node, *Bitree;
char ch;
Bitree T;
Bitree rootb, root;
Bitree CreateBitree() {
cin >> ch;
Bitree T;
if(ch == '#') T = NULL;
//注意:二叉树的输入需要严格遵守以#结尾的规则,并且输入顺序按照前序遍历的方式
else {
T = new node;
T->data = ch;
T->lchild = CreateBitree();
T->rchild = CreateBitree();
}
return T;
}
void PreOrder(Bitree T) {//前序遍历
if(T) {
cout << T->data << " ";
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void CopyBiTree(Bitree T, Bitree &rootb)
//复制二叉树
{
if(T == NULL) {
rootb = NULL;
return ;
} else {
rootb = new node;
rootb->data = T->data;
CopyBiTree(T->lchild, rootb->lchild);
CopyBiTree(T->rchild, rootb->rchild);
}
}
int main() {
root = CreateBitree();
cout << "原二叉树的前序遍历为 ";
PreOrder(root);
CopyBiTree(root, rootb);
cout << endl << "新二叉树的前序遍历为 ";
PreOrder(rootb);
return 0;
}
二叉树的复制
猜你喜欢
转载自blog.csdn.net/yiqzq/article/details/80271838
今日推荐
周排行