题目描述

农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。

你的任务是在被给予奶牛家谱的“树中序遍历”和“树前序遍历”的符号后,创建奶牛家谱的“树的 后序遍历”的符号。每一头奶牛的姓名被译为一个唯一的字母。(你可能已经知道你可以在知道树的两 种遍历以后可以经常地重建这棵树。)显然,这里的树不会有多于 26 个的顶点。 这是在样例输入和 样例输出中的树的图形表达方式:

         C/  \/  \B    G/ \  /A   D  H/ \E   F

树的中序遍历是按照左子树,根,右子树的顺序访问节点。

树的前序遍历是按照根,左子树,右子树的顺序访问节点。

树的后序遍历是按照左子树,右子树,根的顺序访问节点。

输入格式

第一行: 树的中序遍历

第二行: 同样的树的前序遍历

输出格式

单独的一行表示该树的后序遍历。

输入输出样例

输入 #1复制

ABEDFCHG
CBADEFGH

输出 #1复制

AEFDBHGC

说明/提示

题目翻译来自NOCOW。

USACO Training Section 3.4

1.这一题牵扯到的知识是二叉树。

2.我们根据中序遍历的特点,在根节点左边是左子树,在根节点右边的右子树。而前序遍历出现在前面的都是根节点。我们需要根据这个特点去写。

3.前序的根节点,在中序里面刚好可以把他们分为左右子树。

我们再分别递归前部分和后部分。

我们在接下来的前序遍历中需要找到,第一个在前序遍历里面,然后它在中序遍历是又可以分为左右子树的。

4.我们在递归变小的时候,因为后序节点是左右根,而递归刚好又是先进后出的原则,我们可以写成fun(左子树),fun(右子树),最后printf("%c",根节点);即可

代码如下:

#include<stdio.h>
#include<string.h>
char zx[30],xx[30],n;
char fun(int left,int right)
{int i,j;if(left>right) return 0;for(i=0;i<n;i++){for(j=left;j<=right;j++){if(xx[i]==zx[j]) break;}if(j<=right) break;}fun(left,j-1);fun(j+1,right);printf("%c",zx[j]);
}
int main()
{scanf("%s%s",zx,xx);n=strlen(zx);fun(0,n-1);return 0;
}

P1827 [USACO3.4] 美国血统 American Heritage相关推荐

  1. 洛谷 P1827 [USACO3.4] 美国血统 American Heritage

    # [USACO3.4] 美国血统 American Heritage ## 题目描述 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的记帐员.他把他的奶牛 们的家谱作成二叉树,并且把 ...

  2. 洛谷P1827 [USACO3.4] 美国血统 American Heritage

    是滴没错,我滚回来更新了 题目描述 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的记帐员.他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的"树的中序遍历" ...

  3. 洛谷P1827[USACO3.4] 美国血统 American Heritage

    传送门 这题就是二叉树遍历 自然,根据中序遍历和前序遍历,在子树区间中找到根的方法是-- 其实前序遍历本区间第一个就是该子树的根(这个应该都知道) 然后就在中序遍历此区间中找到该节点,节点左边就是左子 ...

  4. P1827 [USACO3.4] 美国血统 American Heritage 洛谷

    题目链接:https://www.luogu.com.cn/problem/P5076. 思路: 递归 ( 具体以后再补充 ) 见代码有注释,希望注释有用...... 代码如下: #include&l ...

  5. [洛谷]P1827 [USACO3.4] 美国血统 American Heritage(知道前序和中序求后续)

    //一定要有中序,然后前序后序其中一个 //中序是确定左右子树,前后续确定根节点 算模板了 #include<string> #include<cstring> #includ ...

  6. 洛谷--P1827 [USACO3.4]美国血统 American Heritage

    思路 我们可以根据前序遍历和中序遍历的特点来找出后续遍历,前序遍历的第一个结点就是根节点,然后根据这个根节点去把中序遍历划分为两个集合,左边就是左子树,右边就是右子树. AC代码 #include&l ...

  7. 洛谷 P1827 [USACO3.4]美国血统 American Heritage

    画个图就很清楚了,用递归还原二叉树 #include<iostream> #include<cstdlib> #include<cstdio> #include&l ...

  8. USACO 3.4.2 American Heritage 美国血统

    题目描述: 3.4.2 American Heritage (heritage) (heritage.pas/c/cpp) 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的记帐员.他把 ...

  9. 洛谷P1827 美国血统

    美国血统 洛谷P1827 Hi 最近我爱上二叉树了- 来 看看这个 唉 题目真么绕 不就是给先序中序求后序嘛 如果你刚刚学二叉树 推荐看看这两道题哦- 二叉树讲解+二叉树深度 后缀表达式 好了 这道题 ...

最新文章

  1. Java调用PHP,跑PHP代码
  2. python接口 同花顺_这是真的么 | 学会了用Python预测股票价格
  3. 急速上线 Serverless 钉钉机器人“防疫精灵”
  4. C语言再学习 -- 字符串和字符串函数
  5. 无法安装声卡及MODEM驱动
  6. Java和C/C++程序实时通讯数据移植问题的研究
  7. Dynamic programming solving ULS
  8. Python2.x 和 3.x 的区别
  9. JAVA day03 数组,方法
  10. 使用Redis实现高并发分布式序列号生成服务
  11. java 随机数性能优化
  12. 通信模块整理(一)JDY-31
  13. 获取网站url ico小图标
  14. 气体涡轮流量计和涡街流量计的区别
  15. 关于思源笔记与docker的部分问题
  16. jsp层级选择器_jQuery 选择器
  17. IT服务工作——好事成双
  18. 中国陷入超低生育率陷阱
  19. 后台管理系统[01第三方库集成]
  20. 20190123——一气化三清 Java中介者模式

热门文章

  1. 新型工业路由器,为进入智能工业时代加快步伐
  2. 虚拟机里博图能连接上实物PLC,但是HMI仿真不能连接实物PLC
  3. uniapp ->video 黑屏 无时长(新手容易遇到的坑)
  4. java.sql.SQLSyntaxErrorException: Table ‘H_PERSION‘ doesn‘t exist
  5. 地图商户搜索导出小程序(电脑+手机工具)
  6. 直插电阻色环电阻读电阻阻值,电阻误差与电阻温度系数方法图文
  7. doris ODBC 连接 mysql 外部表
  8. 将r中的数据导出为excel文件
  9. Flutter高仿微信-第28篇-好友详情-查看个人头像
  10. python 抠图源码_比PS还好用!Python 20行代码批量抠图