题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1710

题意:给前序、中序求后序,多组

前序:根左右

中序:左右根

分析:因为前序(根左右)最先出现的总是根结点,所以令root为前序中当前的根结点下标(并且同时把一棵树分为左子树和右子树)。start为当前需要打印的子树在中序中的最左边的下标,end为当前需要打印的子树在中序中最右边的下标。递归打印这棵树的后序,递归出口为start > end。i为root所表示的值在中序中的下标,所以i即是分隔中序中对应root结点的左子树和右子树的下标。

#include<bits/stdc++.h>
using namespace std;
int n,pre[],in[],flag;
void post(int root,int start,int end)
{
if(start>end)return;
int i=start;
while(i<=end&&in[i]!=pre[root])i++;
post(root+,start,i-);
post(root++i-start,i+,end);
if(flag==)printf("%d",pre[root]),flag=;
else printf(" %d",pre[root]);
}
int main()
{
while(cin>>n)
{
flag=;
for(int i=;i<n;i++)cin>>pre[i];
for(int i=;i<n;i++)cin>>in[i];
post(,,n-);
cout<<endl;
}
return ;
}

最新文章

  1. (转)Redis使用场景及使用经验
  2. android手机和ios手机的分辨率
  3. android学习之ListView
  4. Linux下小工具使用总结
  5. UpdatePanel的使用方法
  6. thinkphp 的create()非法数据解决办法
  7. Objective-C语言分类与协议
  8. CCF真题Z型输出
  9. archlinux随记
  10. 【leetcode】Merge k Sorted Lists(按大小顺序连接k个链表)
  11. bootstrap ch2清除浮动
  12. find命令 参数
  13. javascript 时间函数整理
  14. [转] vi/vim命令模式和编辑模式各种操作
  15. 完美解决safari、微信浏览器下拉回弹效果
  16. Comparable接口和Comparator接口的不同用法
  17. 【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
  18. c语言数据类型(一)
  19. 查看mysql 表大小
  20. 什么是REST编程

热门文章

  1. Proxy动态代理-增强方法
  2. js正则匹配的出链接地址
  3. Windows下编译最新版ChezScheme
  4. [LC]530题 二叉搜索树的最小绝对差
  5. webpack安装与核心概念
  6. 小白学 Python 爬虫(3):前置准备(二)Linux基础入门
  7. python2的编码问题小结
  8. Install aws cli
  9. 使用Docker搭建maven私服 及常规使用方法
  10. PL真有意思(六):子程序和控制抽象