复制二叉树。

问题描述】编写复制一颗二叉树树的非递归算法。
【输入形式】先序序列创建二叉树,数据类型为字符型,空结点用'*'表示。
【输出形式】<中序输出该二叉树,以空格分隔数据><回车><中序输出复制后的二叉树,以空格分隔数据>
【样例输入】ABC**D**CE**F**

【样例输出】

C B D A E C F
C B D A E C F

【样例说明】
【评分标准】

tips:这道题很简单 基本没什么考的 传入传出

           唯一就是复制操作时 根值传递完成后:将”新树“的”左右孩子指针“分别被递归调用该函数《赋值》(当前树的左右孩子作为参传入)

BiTree Copy(BiTree &T)
{
	if (T)
	{
		BiTree T1;
		T1 = new BiTNode;
		T1->data = T->data;
		T1->lc = Copy(T->lc);
		T1->rc = Copy(T->rc);
	}
	return T;
}

总代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;;
typedef struct tree
{
	char data;
	struct tree *lc, *rc;
}BiTNode,*BiTree;
void Creat(BiTree &T)
{
	char val;
	cin >> val;           //首先判断传入的值 有可能第一个就是空子树!!!
	if (val == '*')      //首先传入的为空
		T = NULL;
	else {	//再判断不为空的情况 进行正常操作
		T = new BiTNode;   //给T创空间时 T为BiNode类型!!!
		T->data = val;
		Creat(T->lc);
		Creat(T->rc);
	}
}
void Midorder(BiTree &T)
{
	if (T)
	{
		Midorder(T->lc);
		cout << T->data<<" ";
		Midorder(T->rc);
	}
}
BiTree Copy(BiTree &T)
{
	if (T)
	{
		BiTree T1;
		T1 = new BiTNode;
		T1->data = T->data;
		T1->lc = Copy(T->lc);
		T1->rc = Copy(T->rc);
	}
	return T;
}


int main()
{
	BiTree T;
	Creat(T);
	BiTree T1=Copy(T);
	Midorder(T);
	cout << "\n";
	Midorder(T1);
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值