设计一个递归算法由二叉树BT复制产生另一棵二叉树BT1(假设二叉树采用二叉链存储结构)
设计一个递归算法由二叉树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(假设二叉树采用二叉链存储结构)相关推荐
- 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。
假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...
- 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
试题部分 1. class program { static void Main(string[] args) { int i; i = x(x(8)); } static int x(int n) ...
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...
已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...
- 二叉树的二叉链表存储结构构建以及先序遍历
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 typedef int TElemTy ...
- 西工大NOJ数据结构理论——015.建立二叉树的二叉链表存储结构(严6.70)
我相信,大家都已经了解了这道题的背景,以及明白了我们需要做的事情. 对于这道题的背景,相信大家都熟悉,所以就不说了. 关于我们需要做的事情,大家也已经有了自己的思路.所以,我只在下面简短的写一写我的思 ...
- 6-2-二叉树(二叉链表存储)-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
课本源码部分 第6章 树和二叉树 - 二叉树(二叉链表存储) --<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴 ...
- 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...
- 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)
假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...
- 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...
- java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...
[填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...
最新文章
- Android Handler介绍
- Compute节点无法启动nova组件,错误信息:AMQP server on 127.0.0.1:5672 is unreachable
- js判断undefined和null
- python好学嘛-Python好学吗?Python学习路线
- VBS脚本和HTML DOM自动操作网页
- linux history命令显示时间_每天一条Linux命令(29) more (分页显示内容)
- play框架入门操作
- php+条件限定符,const 限定符
- lisp6 暖通cad_(完整版)暖通CAD设计技巧1
- java相关的国际化步骤_Java语言资源国际化步骤
- Pytorch 入门之数据处理 -- Dataset、Sampler、DataLoader
- 2016matlab打开toolbox,MATLAB2016添加工具箱toolbox方法,有截图
- wget下载github的releases的软件
- matlab 计算 fdr,基因富集分析(p值,q值和FDR值)
- Python3的对象和类
- 唱响艾泽拉斯-Zetacola专辑
- SpringBoot 发送邮件功能(包含网易、QQ、Gmail邮箱)
- 大数据人工智能技术全攻略(一)
- 百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎
- 凯撒移位密码python_凯撒密码python拓展程序
热门文章
- tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决
- 2020-10-18 工资管理系统需求分析报告
- access阿里云 mysql_如何使用access数据库
- 【Codecs系列】AVS1参考代码RM在Windows下编译以及AVS1编解码器的使用方法
- 时序逻辑电路的设计与分析
- bbsmax mysql_mysql 数据库 备份 还原
- python雷达信号处理,信号处理之功率谱原理与python实现
- 传奇登陆游戏黑屏错位以及登陆器配置和常见问题
- Vysor 1.7.6 chrome 插件破解
- asus官方android升级包,华硕ASUS手机平板官方刷机包raw格式解压修改工具