已知二叉树先序中序求后序,已知后序中序求先序
2015-11-28 22:09
411 查看
已知中序先序求后序
[code]#include<iostream> #include<stdio.h> #include<cstring> using namespace std; char inorder[100]; char preorder[100]; void build(int in_l, int in_r, int pre_l, int pre_r){ int mid = strchr(inorder, preorder[pre_l]) - inorder; //递归求左树: 中序子树下标 先序子树下标 if(mid > in_l) build(in_l, mid-1, pre_l + 1, pre_l + mid - in_l); //递归求右树: 中序子树下标 先序子树下标 if(mid < in_r) build(mid+1, in_r, pre_r -in_r+mid + 1, pre_r ); cout<<inorder[mid]; //输出 } int main() { cin>>inorder>>preorder; build(0, strlen(inorder) - 1, 0, strlen(preorder) - 1); return 0; }
已知中序后序求先序 (与上面一个道理)
[code]#include<iostream> #include<stdio.h> #include<cstring> using namespace std; char inorder[1000]; char postorder[1000]; //分治 void build(int l1, int r1, int l2, int r2) { int mid = strchr(inorder, postorder[r2]) - inorder; cout<<inorder[mid]; if(mid > l1) build(l1, mid - 1, l2, l2 + mid - l1 - 1); // if(mid < r1) build(mid + 1, r1, r2 + mid - r1, r2 - 1); if(mid < r1) build(mid + 1, r1, l2+mid-l1, r2 - 1); } int main() { cin>>inorder>>postorder; int len = strlen(inorder); build(0, len-1, 0, len-1); return 0; }
相关文章推荐
- SpringMVC中自定义参数解析器及内置类型的绑定
- 多线程之:线程安全
- jquery自定义插件
- 《精通CSS》阅读备忘
- dedecms织梦获得首字母或拼音的方法,并实现文章列表按首字母归类
- CSS3的过渡属性简单实例
- SlidingMenu
- 关于ORA-00979 不是 GROUP BY 表达式错误的解释
- 第五、六章:图像&链接
- java中String new和直接赋值的区别
- Vc中结构体小计
- Best Time to Buy and Sell Stock IV
- 【简易通讯录】——C语言实现
- redhat6 在字符界面下安装图形界面。
- 数据结构——双向链表实现,基本操作的C++版
- 一个人花8块钱买了只鸡,9块钱卖了,又10块钱买回来,11块钱又卖了,他赚了多少钱?
- perl - 文件操作(一)
- Java中的基本数据类型转换
- KT学算法(四)——找数组中出现超过一半的数字的优雅解和拓展
- 读书笔记