先序序列+中序序列建立二叉树

输入样例:

第一行输入序列长度n,第二行输入n个字符表示二叉树先序遍历的序列,第三行输入n个字符表示二叉树中序遍历的序列

9
ABDGHCEFI
GDHBAECIF

输出样例:

输出二叉树后序遍历的序列。

GHDBEIFCA

代码示例如下:

#include<bits/stdc++.h>
using namespace std;/*9ABDGHCEFIGDHBAECIF结果:GHDBEIFCA
*/struct treeNode
{char data;treeNode* left;          //左孩子treeNode* right;       //右孩子
};
// 前序:中左右
// 中序:左中右
void CreateTree_pre_middle(treeNode* &node, string pre_order, string in_order, int pre1, int pre2, int middle1, int middle2)
{//前提条件if (pre2 >= pre1 && middle2 >= middle1){node = new treeNode();//第一个是根节点node->data = pre_order[pre1];//初始化node->left = node->right = nullptr;//在中序中找到根节点 i 的位置int i;for (i = middle1; i <= middle2; ++i){if (in_order[i] == node->data)break;}//创建左子树和右子树//注意这里是:node->left,node->right,不是nodeCreateTree_pre_middle(node->left, pre_order, in_order, pre1 + 1, pre1 + i - middle1, middle1, i - 1);CreateTree_pre_middle(node->right, pre_order, in_order, pre1 + i - middle1 + 1, pre2, i + 1, middle2);}
}
void post_view(treeNode* node)
{if (node == nullptr) return;post_view(node->left);post_view(node->right);cout << node->data;
}int main()
{int n;cin >> n;string pre_order, in_order;cin >> pre_order >> in_order;treeNode* root;CreateTree_pre_middle(root, pre_order, in_order, 0, n - 1, 0, n - 1);post_view(root);return 0;
}

7-5 先序序列+中序序列建立二叉树相关推荐

  1. 给定二叉树先序、中序遍历序列,求后序遍历

    给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列. 输入描述: 输入为一行. 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔.保证数据合法 输出描述: 对应输 ...

  2. 数据结构---后序和中序遍历的二叉树序列还原二叉树

    数据结构-后序和中序遍历的二叉树序列还原二叉树 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  3. 一遍搞定!关于如何已知后序和中序序列得到前序序列的问题

    首先来个具体的问题吧,因为只是空谈显示不出效果. 如题 : 求先序排列 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点 ...

  4. 根据先序序列和中序,后序和中序序列创建二叉树

    思考:如何才能确定一棵树? 结论:    通过中序遍历和先序遍历可以确定一个树                 通过中序遍历和后续遍历可以确定一个树 通过先序遍历和后序遍历确定不了一个树. 算法实现: ...

  5. 已知先序和中序序列求二叉树

    已知二叉树的先序和中序序列,构造出相应的二叉树 先序:ABCDEFGHlJ 中序:CDBFEAIHGJ 1.由先序求出A为二叉树的根 2.在中序遍历中找到A的位置,则CDBFE为它的左子树,IHGJ为 ...

  6. C语言学习笔记——根据二叉树的后序和中序遍历序列,求这棵树的先序和层次遍历序列

    先根据二叉树的后序和中序遍历序列,用递归的方法创建出这棵树,然后用的自定义栈的先序和层次方法遍历. 输入:  7 2 3 1 5 7 6 4                      1 2 3 4 ...

  7. 二叉树的先序、中序、后序、层序遍历方式详解,由遍历序列构造二叉树过程详解以及C++代码详细实现

    二叉树的遍历 树与二叉树的定义.性质,二叉树的顺序存储结构.链式存储结构 二叉树的遍历是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次.由于二叉树是一种非线性结构,每个结 ...

  8. 数据结构----二叉树已知先序和中序遍历序列求后序遍历

    说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...

  9. 如何给定二叉树的2个遍历序列(前序中序,中序后序),确定二叉树(方法详解)

    根据前序和中序遍历 给定二叉树 前序(根节点-左节点-右节点):A B D E H C F G 中序(左节点-根节点-右节点):D B E H A F C G 第一步:根据前序就可以判断遍历的第一个就 ...

最新文章

  1. Java 线程 知识
  2. Reading Paper
  3. inline ,inline-block ,block
  4. 利用 MongoDB 和 Solr 实现全文搜索
  5. C语言文件读写(5)-文件位置相关
  6. python 结构风险与经验风险 VC维 SRM SVM
  7. IDEA overwrite报错、languagelevel设置不生效问题
  8. C#= 栈模仿堆的操作
  9. nohup /dev/null 21 含义详解
  10. [html] HTML采用的是RGB颜色还是CMYK颜色?为什么?
  11. ddl dml dcl
  12. 矩阵求逆c语言实现_[V-SLAM] Bundle Adjustment 实现
  13. Java 开发者每天都在做什么?
  14. 比较字符串是否相同,比较大小
  15. mysql有没有模式,关于sql:没有数据的MySql导出模式
  16. Java知多少(2)虚拟机(JVM)以及跨平台原理
  17. erps 单环基本原理
  18. java game nokia 5233 model,诺基亚S60/^3完美运行GBA游戏教程 重回孩提时代
  19. OpenLayers 6 实现仿Echarts风格的动态迁徙图/航班图
  20. 计算机报名照片 1寸,国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?...

热门文章

  1. 近端梯度下降法 (proximal gradient descent)
  2. 几个贝叶斯估计的例题
  3. find -perm 里的 + -的含义
  4. css tabindex
  5. 【已解决】WPS/OFFICE中word文件可以打印,excel打印后无响应
  6. C++输入密码显示*
  7. mysql temporary table
  8. 明确不站队BAT,帆软——这家只有几百人的BI公司靠什么赢得生存?
  9. 如何人体穴位自我按摩
  10. 如何下载安装与火狐浏览器不兼容的火狐浏览器插件