习题6_3 二叉树重建(Tree Recovery, ULM 1997, UVa536)
题目描述:
输入一棵树的先序遍历和中序遍历序列,输出后序遍历序列
AC代码:
#include<cstdio>
#include<cstring>const int MAX_N = 30;
char pre_order[MAX_N], in_order[MAX_N];
int lch[MAX_N], rch[MAX_N];
char root;//根据前序 L1~R1, 中序 L2~R2构造二叉树
int build(int L1, int R1, int L2, int R2) {if(L2 > R2) return -1;int root = pre_order[L1] - 'A';int p = L2; while(in_order[p] != root + 'A') p++;int cnt = p - L2; //左子结点的个数 lch[root] = build(L1+1, L1+cnt, L2, L2+cnt-1);rch[root] = build(L1+cnt+1, R1, L2+cnt+1, R2);return root;
}void PostOrder(int x) {if(x == -1) return;PostOrder(lch[x]);PostOrder(rch[x]);printf("%c", x+'A');
}int main() {#ifdef LOCALfreopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);#endifwhile(scanf("%s%s", pre_order, in_order) == 2) {root = build(0, strlen(pre_order)-1, 0, strlen(in_order)-1);PostOrder(root);printf("\n");}return 0;
}
习题6_3 二叉树重建(Tree Recovery, ULM 1997, UVa536)相关推荐
- 习题6-3 二叉树重建(Tree Recovery, ULM 1997, UVa 536)
经典的分治法.. #include <iostream> #include <string> #include <vector> #include <stac ...
- 习题6-3 二叉树重建(Tree Recovery,ULM 1997,UVa 536)
原题链接:https://vjudge.net/problem/UVA-536 分类:树 备注:水题 代码如下: #include<cstdio> #include<string&g ...
- 【数据结构】二叉树 (Binary Tree)
目录 一. 什么是树? 二. 二叉树 特殊二叉树 二叉树的性质 二叉树的存储 二叉树的遍历 二叉树的基本操作 一.什么是树? 之前咱们学习了一些简单的数据结构,如顺序表,链表,这些都是线性结构,线性结 ...
- 二叉树 Binary Tree
我怀着激动的心 走上了这颗树 今天是2021年11月12日 今天开始上树!!!!!! 生活中的树形结构: 树: 根节点: 一棵树有且只有一个根节点就是最上面的节点 兄弟节点: 每一行的节点 它们具 ...
- 『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)!
『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)! 文章目录 一. 树 1.1. 树的定义 1.2. 树的基本术语 1.3. 树的性质 二. 二叉树 2.1. 二叉树的定义 2. ...
- 二叉树——重建二叉树
二叉树--重建二叉树 例如,某二叉树为: 前序遍历为:(4,7,9,2,1,5,6) 中序遍历为:(7,9,4,1,2,6,5) 后序遍历为:(9,7,1,6,5,2,4) 1.前序遍历+中序遍历 = ...
- c++实现简单的数据结构(1.链表合并 2.士兵队列训练问题 3.Rails 4.Josephus Problem 5.Tree Recovery 6.四则运算 7.愚人节的礼物 8.Web)
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...
- Uva536 Tree Recovery二叉树重建(先序和中序确定二叉树,后序输出)
题目大意:给定二叉树先序和中序遍历,输出二叉树后序遍历. 方法:将英文字母映射为数字,利用数组存储,先序第一个节点是父节点,然后再从中序遍历中找到位置.注意边界.代码也很简单一次ac. #includ ...
- POJ 2255 Tree Recovery 二叉树恢复
一道和Leetcode的一道题目基本上一样的题目. 给出前序遍历和中序遍历序列,要求依据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出. Leetcode上有给出后序和中序,恢复二叉树的. 只是 ...
最新文章
- js 抛出异常 throw
- mysql更改锁机别_MYSQL调度与锁定问题(转)
- Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
- Leetcode 102. 二叉树的层次遍历 解题思路及C++实现
- 使用outputstream写到指定位置_MaxCompute Spark与Spark SQL对比分析及使用注意事项
- Java从入门到熟悉的48道练习题[完结]
- eeglab绘制脑电头皮图、通道对应光谱图
- android 倒计时类,Android倒计时工具类
- lua 遍历删除_lua中table如何安全移除元素
- HTML5正确嵌入flash,网页上嵌入Flash播放器(1)
- xp系统计算机远程桌面连接不上,在XP系统中远程桌面连接不上的解决方式
- 本地项目文件上传到码云的全过程(附每个步骤详细插图)
- qemu安卓版免root_用qemu运行一个小小Linux系统
- 个人电脑php漏洞怎么修复,PHP版 6.0 漏洞 要怎么修复
- 生成100个p元素,隔行变色(红、黄、蓝、绿、紫)
- 访问页面转圈圈,怎么分析
- 中国首个“芯片大学”即将落地;生成对抗网络(GAN)的数学原理全解
- 前端开发(html)
- SEED LABS初入
- openflow交换机 ryu_openflow的初步认识及RYU控制器实践