[hiho 10]由前序中序遍历求后序遍历
题目描述
分治思想,递归求解。
先建树再后序遍历:
#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]由前序中序遍历求后序遍历相关推荐
- 【C++】已知二叉树先序遍历+中序遍历 求后序遍历
题目:已知二叉树先序遍历+中序遍历 求后序遍历 对于一棵二叉树,给定其先序遍历的结果序列和中序遍历的结果序列,请写出其后序遍历的结果序列. 输入样例: GDAFEMHZ(先序遍历的结果序列) ADEF ...
- 已知前序中序,求后序
已知二叉树的前序和中序,求其后序 例:前序(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 思路:先序的遍 ...
- POJ 2255 Tree Recovery(已知前序中序,求后序)
1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...
- Tree Recovery(二叉树递归遍历+求后序遍历模板)
题意:已知先序和中序,将后序求出来 Little Valentine liked playing with binary trees very much. Her favorite game was ...
- 【算法】【树】已知先序中序序列求后序序列(详细解释)
题目描述 如题所示,已知先序中序序列建树与求后序序列 算法原理 利用递归和分制的思想,找到当前树先序序列的根节点,然后找到对应中序序列的位置,然后根据根节点在中序序列中的位置来判断左右子树分别的位置, ...
- 已知二叉树前序中序,求后序代码实现
思路: 平时做笔试题目时,都是先拿前序的首字母,去和中序的字母比较,然后把中序的分成两段,不停的遍历,直到长度等于一(即叶子节点). 例题 二叉树是一种常用的数据结构.我们可以用大写的英文字母表示二叉 ...
- 二叉树--先序中序遍历求后序遍历
先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树.这样再去先序遍历中找到左子树的根节点,然后再 ...
- 二叉树重建(前中序遍历求后序模板刘汝佳小白本)
输入一棵二叉树的先序遍历和中序遍历序列,输出它的后序遍历序列. 输入: DBACEGF ABCDEFG BCAD CBAD 输出: ACBFGED CDAB #include<stdio.h&g ...
- hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online...
很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死-- 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了--没了! 反复读题,终于在偶然间 ...
- 数据结构二叉树遍历求后序
注意左右子树的递归 参考自https://blog.csdn.net/hou_blog/article/details/50015503
最新文章
- 一个高(3D/2D)动态表现的酷站
- EXCEL——批量生成中国各省省会经纬度JSON的一种方法
- GDCM:gdcm::Sorter的测试程序
- 13_clickhouse,Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer
- 调用百度API写了一个js翻译小工具
- 80x86 CPU 的工作模式
- java编程思想 初始化_《java编程思想》_第五章_初始化与清理
- YOLOv3通道+层剪枝,参数压缩98%,砍掉48个层,提速2倍!
- 2019年北航OO第二单元(多线程电梯任务)总结
- JS_console对象中的一些常用方法
- 正则表达式 6. 存在(或)
- flutter 的gradle下载不了怎么办
- vb脚本从入门到精通_sqlmap从入门到精通第七章720 绕过WAF脚本space2morecommentamp;space2morehash...
- 数据分析从入门到进阶,35本包邮送到家
- LINUX安装依赖库冲突的最终版本:下列软件包有未满足的依赖关系/但是它将不会被安装/无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- plsql查询无结果集_何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督...
- shiro放行_Shiro框架详解
- 2020中国边缘计算企业20强
- 【GEEK】win10下cmd美化
- golang语言牛顿法求平方根