已知先序,中序,求后序
来源:互联网 发布:淘宝无忧退货 编辑:程序博客网 时间:2024/05/01 03:22
#include <iostream>using namespace std;void func(int* pre, int* mid, int pre_left, int pre_right, int mid_left, int mid_right){ if(pre_left == pre_right) { cout<<pre[pre_left]<<" "; return ; } int left_i=pre_left, mid_i=mid_left; while(mid_i<=mid_right) { if(pre[pre_left] == mid[mid_i]) { func(pre, mid, pre_left+1, left_i, mid_left, mid_i-1); func(pre, mid, left_i+1, pre_right, mid_i+1, mid_right); cout<<pre[pre_left]<<" "; break; }else{ mid_i++; left_i++; } }}int main(void){ int pre[] = {8,5,2,6,13,10,15}; int mid[] = {2,5,6,8,10,13,15}; int n = sizeof(pre)/sizeof(pre[0]); func(pre, mid, 0, n-1, 0, n-1); return 0;}
写的有点复杂,下面的简单点儿:
/*pre-order: {1,2,4,7,3,5,6,8}in-order: {4,7,2,1,5,3,8,6}*/TNode* rebuild_BTree(int* pre_order, int *in_order, int len){if(pre_order==NULL || in_order==NULL || len==0)return NULL;TNode* h = new TNode;h->m_nValue = *pre_order;int* in_h = in_order;while(*in_h != *pre_order)in_h++;int l_len, r_len;l_len = in_h-in_order;h->m_pLeft = rebuild_BTree(pre_order+1, in_order, l_len);r_len = len-(in_h-in_order+1);h->m_pRigh = rebuild_BTree(pre_order+(len-r_len), in_h+1, r_len);return h;}
- 已知先序,中序,求后序
- 二叉树——已知先序、中序,求后序
- 已知先序遍历和中序遍历求后序遍历
- Binary Tree Traversals 已知先序 中序 求后序
- 已知先序、中序求后序;已知中序、后序求先序(C++)
- 已知先序遍历和中续遍历求后序遍历
- 已知先序和中序求后序
- //先序a 和中序b 求后序 //已知后序a 中序b 求先序
- 二叉树构造 (已知先序 和中序)
- 已知先序和中序求后序或中序和后序求先序
- 已知先序遍历和中序遍历
- 已知先序序列、中序序列创建二叉树
- hihocoder #1049 : 后序遍历 (已知先序遍历和中序遍历求后序遍历)
- 已知先序遍历和中序遍历求后序遍历——二叉树
- 【编程之美】3.9已知先序和中序遍历,求后序遍历+POJ-2255
- poj 2255 二叉树 已知先序和中序,求后序
- POJ2255-Tree Recovery 已知先序遍历和中序遍历求后序遍历
- 已知二叉树的先序和中序遍历,求后序遍历及二叉树
- Maven 手动安装JAR包 到本地仓库
- VirtualBox虚拟机的四种主要网络设置方式
- PyQt4 精彩实例分析* 实例12 基本布局管理
- mysql使用 limit 1提高查询效率
- SD-sap是如何确定条件值的数值或者比例(KBERT)的?
- 已知先序,中序,求后序
- GC 日志分析
- 安装ruby 2.0
- 关于运放的选择
- jsf mysql
- Can I use NDMP to backup from (or to) appliance?
- iOS中动画的实现:以及视图的移动、缩放和旋转
- 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题
- Quartz.net