HihoCoder第十周——已知前序中序求后序
来源:互联网 发布:好帮手软件简介 编辑:程序博客网 时间:2024/06/04 19:00
思路
我们定义post_order(str1, str2)为一棵前序遍历的结果为str1,中序遍历的结果为str2的二叉树的后序遍历的结果。
如果要求解post-order(str1, str2)的话,首先不难发现,根据‘前序遍历’str1=‘根节点’+‘左子树的前序遍历’+‘右子树的前序遍历’,我可以知道这棵二叉树的根节点root便是str1的第一个字符。
在知道了‘根节点’root之后,便可以利用‘中序遍历’str2=‘左子树的中序遍历’+‘根节点’+‘右子树的中序遍历’,求解出‘左子树的中序遍历’str2L和‘右子树的中序遍历’str2R。
由于一棵子树的前序遍历和中序遍历的长度相同,那么仍然是根据‘前序遍历’str1=‘根节点’+‘左子树的前序遍历’+‘右子树的前序遍历’,我可以知道从str1的第2个字符开始的str2L.length()个字符便是‘左子树的前序遍历’str1L,而这之后的部分便是‘右子树的前序遍历’str1R。
实现
#include <iostream>#include <string>using namespace std;void post(string pre,string mid){ if(pre.length() <= 1){ cout << pre;return; } size_t loc = mid.find(pre[0]); post(pre.substr(1,loc),mid.substr(0,loc)); post(pre.substr(loc+1),mid.substr(loc+1)); cout << pre[0];}int main(){ string pre,mid; cin >> pre >> mid; post(pre,mid); return 0;}
阅读全文
0 0
- HihoCoder第十周——已知前序中序求后序
- HihoCoder第十周:后序遍历
- HihoCoder第十二周——树上DP
- HihoCoder ——1305
- 第十周—个人所得税
- 已知前序中序求后序
- 已知前序中序求后序
- 第三周—二分法4 已知面积,求最大体积
- HihoCoder——Trie树
- 求割点割边——hihoCoder 1183
- DP——hihoCoder 1482
- hihocoder-第十一周 树中的最长路
- hihocoder第十一周树中的最长路
- HihoCoder第十一周:树中的最长路
- hihoCoder第八周——状态压缩·一
- 第十周—改进小学生
- hihoCoder挑战赛B题——计数
- hihoCoder挑战赛A题——顺子
- 服务状态的工具类
- Tomcat系列—JDK安装(tar.gz)
- JS 中关于document和window对象的一些值: scrollHeight,scrollLeft,scrollTop,scrollWidth等。。
- dubbox编译
- 汇编1
- HihoCoder第十周——已知前序中序求后序
- JDBC增删改查 代码演示
- css一些常用属性
- Node.js第三方模块之htmlparser2
- 汇编2
- c#算法
- HDU 5816 Hearthstone(状态压缩DP+概率)
- 单调栈的尝试
- 【for循环】打印菱形