题目描述

分治思想,递归求解。

先建树再后序遍历:

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;char pre[26], mid[26];typedef
struct _tree {char c;_tree *lc, *rc;_tree(char ch) {c = ch;}
} Tree, *PTree;PTree makeTree(int pb, int mb, int len) {if (len <= 0) return nullptr;char root_char = pre[pb];int idx;for (idx = mb; idx < mb + len; idx++) {if (mid[idx] == root_char) {break;}}PTree root = new Tree(root_char);root->lc = makeTree(pb + 1, mb, idx - mb);root->rc = makeTree(pb + 1 + idx - mb, idx + 1, mb + len - idx - 1);return root;
}void post_traverse(PTree root) {if (root == nullptr) return;post_traverse(root->lc);post_traverse(root->rc);cout << root->c;
}int main() {cin >> pre >> mid;int len = strlen(pre);PTree root = makeTree(0, 0, len);post_traverse(root);return 0;
}

实际上建树过程是可以略去的,处理时直接输出后序遍历结果:

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;char pre[26], mid[26];void solve(int pb, int mb, int len) {if (len <= 0) return;char root_char = pre[pb];int idx;for (idx = mb; idx < mb + len; idx++) {if (mid[idx] == root_char) {break;}}solve(pb + 1, mb, idx - mb);solve(pb + 1 + idx - mb, idx + 1, mb + len - idx - 1);cout << root_char;
}int main() {cin >> pre >> mid;int len = strlen(pre);solve(0, 0, len);return 0;
}

转载于:https://www.cnblogs.com/xblade/p/4475021.html

[hiho 10]由前序中序遍历求后序遍历相关推荐

  1. 【C++】已知二叉树先序遍历+中序遍历 求后序遍历

    题目:已知二叉树先序遍历+中序遍历 求后序遍历 对于一棵二叉树,给定其先序遍历的结果序列和中序遍历的结果序列,请写出其后序遍历的结果序列. 输入样例: GDAFEMHZ(先序遍历的结果序列) ADEF ...

  2. 已知前序中序,求后序

    已知二叉树的前序和中序,求其后序 例:前序(A B D G H C E I F J ) 中序(G D H B A E I C J F) 其后序为:G H D B I E J F C A 思路:先序的遍 ...

  3. POJ 2255 Tree Recovery(已知前序中序,求后序)

    1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...

  4. Tree Recovery(二叉树递归遍历+求后序遍历模板)

    题意:已知先序和中序,将后序求出来 Little Valentine liked playing with binary trees very much. Her favorite game was ...

  5. 【算法】【树】已知先序中序序列求后序序列(详细解释)

    题目描述 如题所示,已知先序中序序列建树与求后序序列 算法原理 利用递归和分制的思想,找到当前树先序序列的根节点,然后找到对应中序序列的位置,然后根据根节点在中序序列中的位置来判断左右子树分别的位置, ...

  6. 已知二叉树前序中序,求后序代码实现

    思路: 平时做笔试题目时,都是先拿前序的首字母,去和中序的字母比较,然后把中序的分成两段,不停的遍历,直到长度等于一(即叶子节点). 例题 二叉树是一种常用的数据结构.我们可以用大写的英文字母表示二叉 ...

  7. 二叉树--先序中序遍历求后序遍历

    先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树.这样再去先序遍历中找到左子树的根节点,然后再 ...

  8. 二叉树重建(前中序遍历求后序模板刘汝佳小白本)

    输入一棵二叉树的先序遍历和中序遍历序列,输出它的后序遍历序列. 输入: DBACEGF ABCDEFG BCAD CBAD 输出: ACBFGED CDAB #include<stdio.h&g ...

  9. hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online...

    很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死-- 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了--没了! 反复读题,终于在偶然间 ...

  10. 数据结构二叉树遍历求后序

    注意左右子树的递归 参考自https://blog.csdn.net/hou_blog/article/details/50015503

最新文章

  1. 一个高(3D/2D)动态表现的酷站
  2. EXCEL——批量生成中国各省省会经纬度JSON的一种方法
  3. GDCM:gdcm::Sorter的测试程序
  4. 13_clickhouse,Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer
  5. 调用百度API写了一个js翻译小工具
  6. 80x86 CPU 的工作模式
  7. java编程思想 初始化_《java编程思想》_第五章_初始化与清理
  8. YOLOv3通道+层剪枝,参数压缩98%,砍掉48个层,提速2倍!
  9. 2019年北航OO第二单元(多线程电梯任务)总结
  10. JS_console对象中的一些常用方法
  11. 正则表达式 6. 存在(或)
  12. flutter 的gradle下载不了怎么办
  13. vb脚本从入门到精通_sqlmap从入门到精通第七章720 绕过WAF脚本space2morecommentamp;space2morehash...
  14. 数据分析从入门到进阶,35本包邮送到家
  15. LINUX安装依赖库冲突的最终版本:下列软件包有未满足的依赖关系/但是它将不会被安装/无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
  16. plsql查询无结果集_何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督...
  17. shiro放行_Shiro框架详解
  18. 2020中国边缘计算企业20强
  19. 【GEEK】win10下cmd美化
  20. golang语言牛顿法求平方根

热门文章

  1. java IO 笔记
  2. Linux(centos)中rpm命令的运用
  3. 献给初学破解人的口诀和指令
  4. 参加东方道迩2010用户大会的归来总结
  5. 完美企业网站的101项指标
  6. 我的博客之[网管日志]
  7. 实践两个servlet小项目
  8. 老大:用脚本实现Nginx日志每天切分的功能?我:脱了裤子放屁!
  9. 32岁程序员推拿一小时差点丧命!医生说按错这个地方
  10. redis cluster节点挂掉后_深入浅出—Redis集群的相关详解