复制二叉树

欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题。

#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
	char data; //数据域
	struct BiTNode *lchild, *rchild; //左、右孩子指针
}BiTNode, *BiTree;
void CreatBiTree(BiTree &bt){
	//构造二叉树
	char ch;
	ch=getchar();
	if(ch=='#')
		bt=NULL;
	else{
		bt=(BiTree)malloc(sizeof(BiTNode));
		bt->data=ch;
		CreatBiTree(bt->lchild);
		CreatBiTree(bt->rchild);
	} 
} 
BiTree Copy(BiTree bt){
	//复制二叉树 
 	if (bt){
  		BiTree bt2=(BiTree)malloc(sizeof(BiTNode));
  		bt2->data=bt->data;
  		bt2->lchild=Copy(bt->lchild);
  		bt2->rchild=Copy(bt->rchild);
  		return bt2;
 	}
 	else
  		return NULL;
} 
void visit(char data){
	printf("%3c",data);
}
void PreOrderTraverse(BiTree bt){
	//先序遍历
		if(bt){
			visit(bt->data);
			PreOrderTraverse(bt->lchild);
			PreOrderTraverse(bt->rchild);
		} 
	} 
int main(){
	BiTree bt,bt2;
	printf("请输入数据构造一棵二叉树:\n");
	CreatBiTree(bt);
	PreOrderTraverse(bt);
	printf("\n复制一棵二叉树:\n");
	bt2=Copy(bt);
	PreOrderTraverse(bt2);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值