设计一个递归算法由二叉树BT复制产生另一棵二叉树BT1(假设二叉树采用二叉链存储结构)

源代码如下:

#include <iostream>
using namespace std;//二叉树的结构
typedef struct BTNode {char data;struct BTNode *left;struct BTNode *right;
}BTNode;//由二叉树BT复制产生另一棵二叉树BT1
void copyBTree(BTNode*BT, BTNode*&BT1) {if (BT==NULL) {BT1 = NULL;}else{BT1 = (BTNode*)malloc(sizeof(BTNode));BT1->data = BT->data;copyBTree(BT->left, BT1->left);copyBTree(BT->right, BT1->right);}}//根据先序序列和中序序列递归创建二叉树
BTNode * BTCreate(char a[], char b[], int n) {int k;if (n == 0) {return NULL;}int root = a[0];BTNode *BT = (BTNode *)malloc(sizeof(BTNode));BT->data = root;   //树根的值可以确定了for (k = 0; k < n; k++) {                  //在b中查找b[k]=root的根节点if (b[k] == root) {break;}}BT->left = BTCreate(a + 1, b, k);               //递归创建左子树BT->right = BTCreate(a + k + 1, b + k + 1, n - k - 1);        //递归创建右子树return BT;
}void PreOrder(BTNode *BTNode)
{if (BTNode == NULL)return;cout << BTNode->data << " ";PreOrder(BTNode->left); //递归调用,先序遍历左子树 PreOrder(BTNode->right); //递归调用,先序遍历右子树 }int main() {int n = 0;cout << "请输入序列个数" << endl;cin >> n;char *a = new char[n];cout << "请输入先序序列" << endl;for (int i = 0; i < n; i++) {cin >> a[i];}char *b = new char[n];cout << "请输入中序序列" << endl;for (int i = 0; i < n; i++) {cin >> b[i];}BTNode *BT = NULL;BT = BTCreate(a, b, n);        //创建成功PreOrder(BT);                    //检验是否创建成功cout << endl;BTNode *BT1 = NULL;copyBTree(BT, BT1);PreOrder(BT1);           //检验是否复制成功cout << endl;system("pause");return 0;
}

输出为:

请输入序列个数
8
请输入先序序列
a b d g c e f h
请输入中序序列
d g b a e c h f
a b d g c e f h
a b d g c e f h
请按任意键继续. . .

设计一个递归算法由二叉树BT复制产生另一棵二叉树BT1(假设二叉树采用二叉链存储结构)相关推荐

  1. 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。

    假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...

  2. 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...

    试题部分 1. class program { static void Main(string[] args) { int i; i = x(x(8)); } static int x(int n) ...

  3. 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...

    已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...

  4. 二叉树的二叉链表存储结构构建以及先序遍历

    #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 typedef int TElemTy ...

  5. 西工大NOJ数据结构理论——015.建立二叉树的二叉链表存储结构(严6.70)

    我相信,大家都已经了解了这道题的背景,以及明白了我们需要做的事情. 对于这道题的背景,相信大家都熟悉,所以就不说了. 关于我们需要做的事情,大家也已经有了自己的思路.所以,我只在下面简短的写一写我的思 ...

  6. 6-2-二叉树(二叉链表存储)-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...

    课本源码部分 第6章  树和二叉树 - 二叉树(二叉链表存储) --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴 ...

  7. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适

    题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...

  8. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

  9. 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结

    假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...

  10. java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...

    [填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...

最新文章

  1. Android Handler介绍
  2. Compute节点无法启动nova组件,错误信息:AMQP server on 127.0.0.1:5672 is unreachable
  3. js判断undefined和null
  4. python好学嘛-Python好学吗?Python学习路线
  5. VBS脚本和HTML DOM自动操作网页
  6. linux history命令显示时间_每天一条Linux命令(29) more (分页显示内容)
  7. play框架入门操作
  8. php+条件限定符,const 限定符
  9. lisp6 暖通cad_(完整版)暖通CAD设计技巧1
  10. java相关的国际化步骤_Java语言资源国际化步骤
  11. Pytorch 入门之数据处理 -- Dataset、Sampler、DataLoader
  12. 2016matlab打开toolbox,MATLAB2016添加工具箱toolbox方法,有截图
  13. wget下载github的releases的软件
  14. matlab 计算 fdr,基因富集分析(p值,q值和FDR值)
  15. Python3的对象和类
  16. 唱响艾泽拉斯-Zetacola专辑
  17. SpringBoot 发送邮件功能(包含网易、QQ、Gmail邮箱)
  18. 大数据人工智能技术全攻略(一)
  19. 百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎
  20. 凯撒移位密码python_凯撒密码python拓展程序

热门文章

  1. tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决
  2. 2020-10-18 工资管理系统需求分析报告
  3. access阿里云 mysql_如何使用access数据库
  4. 【Codecs系列】AVS1参考代码RM在Windows下编译以及AVS1编解码器的使用方法
  5. 时序逻辑电路的设计与分析
  6. bbsmax mysql_mysql 数据库 备份 还原
  7. python雷达信号处理,信号处理之功率谱原理与python实现
  8. 传奇登陆游戏黑屏错位以及登陆器配置和常见问题
  9. Vysor 1.7.6 chrome 插件破解
  10. asus官方android升级包,华硕ASUS手机平板官方刷机包raw格式解压修改工具