遍历问题 codevs
1029
遍历问题
1029 遍历问题
我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:
所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同。
输入文件共2行,第一行表示该树的前序遍历结果,第二行表示该树的后序遍历结果。输入的字符集合为{a-z},长度不超过26。
输出文件只包含一个不超过长整型的整数,表示可能的中序遍历序列的总数。
abc
cba
4
思路
只有一个儿子 的节点 才会在知道 前序后序 的情况下有不同的中序遍历,所以将题目转化成找 只有一个儿子的节点个数。
可以很容易的找出这类节点在前序后序中出现的规律。(前序中出现AB,后序中出现BA,则这个节点只有一个儿子)
每个这类节点有两种中序遍历(及儿子在左,儿子在右)根据乘法原理中序遍历数为 2^节点个数 种
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char qian[];
char hou[];
int ans=;
int main()
{
scanf("%s%s",qian,hou);
for(int i=;i<=strlen(qian)-;i++)
for(int j=;j<=strlen(hou)-;j++)
if(qian[i]==hou[j]&&qian[i+]==hou[j-])
ans++;
printf("%d",<<ans);
}
2010 |
求后序遍历 |
2010 求后序遍历
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。
仅一行,表示树的后序遍历序列。
abdehicfg
dbheiafcg
dhiebfgca
输入长度不大于255。
代码
#include<iostream>
using namespace std;
int len;
string s1,s2;
void dfs(int s,int l,int r)
{
if(l==r)return;
int pos=l;
for(int i=l;i<=r;i++)if(s1[s]==s2[i]){pos=i;break;}
dfs(s+,l,pos);
dfs(s+pos-l+,pos+,r);
cout<<s1[s];
}
int main()
{
cin>>s1>>s2;
len=s1.length();
dfs(,,len);
}
3143 |
二叉树的序遍历 |
3143 二叉树的序遍历
求一棵二叉树的前序遍历,中序遍历和后序遍历
第一行一个整数n,表示这棵树的节点个数。
接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号。
输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。
5
2 3
4 5
0 0
0 0
0 0
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
n <= 16
代码
#include<iostream>
using namespace std;
int n;
struct node{
int l,r;
}tree[];
void dfs(int v)
{
cout<<v<<' ';
if(tree[v].l!=)dfs(tree[v].l);
if(tree[v].r!=)dfs(tree[v].r);
}
void afs(int v)
{
if(tree[v].l!=)afs(tree[v].l);
cout<<v<<' ';
if(tree[v].r!=)afs(tree[v].r);
}
void cfs(int v)
{
if(tree[v].l!=)cfs(tree[v].l);
if(tree[v].r!=)cfs(tree[v].r);
cout<<v<<' ';
}
int main()
{
cin>>n;
int x,y;
for(int i=;i<=n;i++)
{
cin>>x>>y;
tree[i].l=x;
tree[i].r=y;
}
dfs();cout<<endl;
afs();cout<<endl;
cfs();
}
遍历问题 codevs的更多相关文章
- 二叉树结构 codevs 1029 遍历问题
codevs 1029 遍历问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 我们都很熟悉二叉树的前序.中序.后序遍 ...
- codevs 1029 遍历问题
1029 遍历问题 http://codevs.cn/problem/1029/ 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 我们都很熟悉二叉树的 ...
- codevs 1013 求先序排列(二叉树遍历)
传送门 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). Input 两个字符串,分别是中序和后序(每行一个) Outp ...
- codevs 3143 二叉树的序遍历
传送门 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 Input 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i行的两个整数Li和Ri代表编号为i的 ...
- 3143 二叉树的序遍历codevs
题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i ...
- codevs 2010 求后序遍历
时间限制: 1 s空间限制: 64000 KB题目描述 Description输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列.输入描述 Input Description共两行,第一行一个字符 ...
- 3143 codevs 二叉树的序遍历
题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i ...
- Codevs 二叉树遍历问题 合集
2010 求后序遍历 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. ...
- codevs 2010 求后序遍历x
题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. 输入描述 Input Description 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串, ...
随机推荐
- matlab 在机器视觉中常用的函数
~ triangulate() 三角化(获得距离)匹配点 ~ undistortImage() 去除相机畸变并生成图像
- 采集练习(十二) python 采集之 xbmc 酷狗电台插件
前段时间买了个树莓派才知道有xbmc这么强大的影音软件(后来我逐渐在 电脑.手机和机顶盒上安装xbmc),在树莓派上安装xbmc后树莓派就成为了机顶盒,后面在hdpfans论坛发现了jackyspy ...
- iOS本地数据存取,看这里就够了
本文授权转载,作者:hosea_zhou(简书) 应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2) ...
- BZOJ 4523 [Cqoi2016]路由表 Trie树
Trie树的应用题目. 在线建立一棵01 Trie树,然后按照要求用询问在上面跑,用单调栈维护答案即可. #include<iostream> #include<cstdio> ...
- 如何在Mac的Finder中显示/usr、/tmp、/var等隐藏目录
原文链接: http://blog.csdn.net/yhawaii/article/details/7435918 Finder中默认是不显示/usr./tmp./var等隐藏目录的,通过在终端中输 ...
- ASP.NET 4.0 页面 ValidateRequest="false" 失效不起作用
当ASP.NET 2.0升级到 ASP.NET 4.0后,页面的 ValidateRequest="false" 不起作用. 因为 ASP.NET 4.0 请求验证被提前到IHtt ...
- mooc_java 集合框架中 学生所选课程2Map&HashMap
Map&HashMapMap提供映射关系,元素以键值对形式存储,Map的键值对一Entry类型的对象实例形式存在,key值不能重复,value可以键最多能映射到一个值,支持泛型 Map< ...
- BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的 ...
- Java se 知识图解
- CSS实现简单无缝滚动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...