CodeVS 1013&1029
若干二叉树遍历的数据结构题。
Problem 1013
传送门:http://codevs.cn/problem/1013/
本题是一个数据结构——二叉树遍历问题。
对二叉树,给定中序遍历序列(In-order Traverse Sequence)和后序遍历序列(Post-order Traverse Sequence),求此二叉树的前序遍历序列(Pre-order Traverse Sequence)。
a.前序遍历:root->left sub-tree->right sub-tree;
b.中序遍历:left sub-tree->root->right sub-tree;
c.后序遍历:left sub-tree->right sub-tree->root;
于是,对于中序序列s与后序序列t,考虑分别将其分成三部分:根结点、左子树、右子树。设给定序列的长度为len,则root在后序序列t中的位置为len(后序序列中的最后一个位置为根结点)。设root在中序序列s中的位置为pos,则左子树的中序序列为s[1..pos-1],右子树的中序序列为s[pos+1..len]。于是,左子树的后序序列为t[1..pos-1],右子树的后序序列为t[pos..len-1]。递归地求解当前的根结点即可。
参考程序如下:
#include <bits/stdc++.h>
using namespace std; void dfs(string s, string t)
{
if (!s.length()) return;
//root
int len = s.length();
int pos = s.find(t.at(len - ));
printf("%c", t.at(len - ));
//left subtree
int l = pos;
dfs(s.substr(, l), t.substr(, l));
//right subtree
int r = len - pos - ;
dfs(s.substr(pos + , r), t.substr(pos, r));
} int main(void)
{
string s, t;
cin >> s >> t;
dfs(s, t);
return ;
}
Problem 1029
传送门:http://codevs.cn/problem/1029/
本题是一个数据结构——二叉树遍历问题。
对二叉树,给定前序遍历序列(Pre-order Traverse Sequence)和后序遍历序列(Post-order Traverse Sequence),求此二叉树的中序遍历序列(In-order Traverse Sequence)的所有可能情况数。
中序序列的不唯一性,来源于“无sibling的叶结点”。设前序序列和后序序列分别为s、t,设这个叶结点在s中的位置为i,在t中的位置为j,即s[i]==t[j]。由于这个结点无sibling,于是其parent在s中的位置为i-1,在t中的位置为j+1,即s[i-1]==t[j+1]。统计所有的“无sibling的叶结点”:cnt=card{(i,j)|1<i≤n,1≤j<n,s[i]=t[j],s[i-1]=t[j+1]}。则所有可能情况数为2cnt。
参考程序如下:
#include <stdio.h>
#include <string.h> int main(void)
{
char s[], t[];
scanf("%s%s", s, t);
int cnt = ;
for (int i = ; i < strlen(s); i++) {
for (int j = ; j < strlen(t) - ; j++) {
if (s[i] == t[j] && s[i - ] == t[j + ]) cnt++;
}
}
printf("%lld\n", 1LL << cnt);
return ;
}
CodeVS 1013&1029的更多相关文章
- codevs 1013 求先序排列
题目链接:http://codevs.cn/problem/1013/ 题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...
- codevs——1013 求先序排列
1013 求先序排列 2001年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给出 ...
- codevs 1013 求先序排列(二叉树遍历)
传送门 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). Input 两个字符串,分别是中序和后序(每行一个) Outp ...
- codevs 1013 求先序排列 2001年NOIP全国联赛普及组 x
题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Inpu ...
- 二叉树结构 codevs 1029 遍历问题
codevs 1029 遍历问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 我们都很熟悉二叉树的前序.中序.后序遍 ...
- codevs 1029 遍历问题
1029 遍历问题 http://codevs.cn/problem/1029/ 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 我们都很熟悉二叉树的 ...
- codevs http://www.codevs.cn/problem/?problemset_id=1 循环、递归、stl复习题
12.10高一练习题 1.要求: 这周回顾复习的内容是循环.递归.stl. 不要因为题目简单就放弃不做,现在就是练习基础. 2.练习题: (1)循环 题目解析与代码见随笔分类 NOI题库 htt ...
- T1013 求先序排列 codevs
http://codevs.cn/problem/1013/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descr ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
随机推荐
- 十分钟学会canvas
一句话描述:canvas是HTML5加入的用来绘制2D图像与文字的元素. 基础 简单步骤: var c = document.getElementById("mycanvas"); ...
- eclipse添加插件、删除插件 示例: eclipse marketplace
在有些版本的eclips上并没有eclipse marketplace ,这让eclipse添加插件变得比较玛法,传统的办法都是通过自行下载插件或者用 help->install new sof ...
- 表现与数据分离;前台MVC
无意间看到一个web前端招聘要求:表现与数据分离 这名词对我非常陌生,我就去百度了下 由于有各种莫名其妙的需求,所以才会出现我们前端MVC这样的莫名其妙的东西... 我们的html就是model,我们 ...
- 如何运行开源的React Native项目?
如何运行开源的RN项目? 1.下载 2.解压 3.配置本地sdk位置 sdk.dir = D\:\\Android\\SDK 4.调整gradle版本 apply plugin: "com. ...
- https://www.threatminer.org/domain.php?q=blackschickens.xyz ——域名的信誉查询站点 还可以查IP
https://www.threatminer.org/domain.php?q=blackschickens.xyz https://www.threatminer.org/host.php?q=6 ...
- mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%.汗呀. 本文就来剖析一下mong ...
- nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
转自:https://blog.csdn.net/licheng989/article/details/28929411 在Bean中有代码 public abstract Axe getAxe(); ...
- BZOJ 2969 期望
思路: 我们可以分开算每个格子自己的期望啊... 期望可以累加的 那就把这个大格子 分成 9个部分 分别算好了... //By SiriusRen #include <cmath> #in ...
- A - Next Round
Problem description "Contestant who earns a score equal to or greater than the k-th place finis ...
- android黑科技系列——应用市场省流量更新(增量升级)原理解析
一.前言 最近在看热修复相关的框架,之前我们已经看过了阿里的Dexposed和AndFix这两个框架了,不了解的同学可以点击这里进行查看:Dexposed框架原理解析 和 AndFix热修复框架原理解 ...