遍历问题 codevs
2018-06-17 23:30:45来源:未知 阅读 ()
1029 |
遍历问题 |
1029 遍历问题
我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:
所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同。
输入文件共2行,第一行表示该树的前序遍历结果,第二行表示该树的后序遍历结果。输入的字符集合为{a-z},长度不超过26。
输出文件只包含一个不超过长整型的整数,表示可能的中序遍历序列的总数。
abc
cba
4
思路
只有一个儿子 的节点 才会在知道 前序后序 的情况下有不同的中序遍历,所以将题目转化成找 只有一个儿子的节点个数。
可以很容易的找出这类节点在前序后序中出现的规律。(前序中出现AB,后序中出现BA,则这个节点只有一个儿子)
每个这类节点有两种中序遍历(及儿子在左,儿子在右)根据乘法原理中序遍历数为 2^节点个数 种
代码
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char qian[30]; char hou[30]; int ans=0; int main() { scanf("%s%s",qian,hou); for(int i=0;i<=strlen(qian)-1;i++) for(int j=1;j<=strlen(hou)-1;j++) if(qian[i]==hou[j]&&qian[i+1]==hou[j-1]) ans++; printf("%d",1<<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+1,l,pos); dfs(s+pos-l+1,pos+1,r); cout<<s1[s]; } int main() { cin>>s1>>s2; len=s1.length(); dfs(0,0,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[20]; void dfs(int v) { cout<<v<<' '; if(tree[v].l!=0)dfs(tree[v].l); if(tree[v].r!=0)dfs(tree[v].r); } void afs(int v) { if(tree[v].l!=0)afs(tree[v].l); cout<<v<<' '; if(tree[v].r!=0)afs(tree[v].r); } void cfs(int v) { if(tree[v].l!=0)cfs(tree[v].l); if(tree[v].r!=0)cfs(tree[v].r); cout<<v<<' '; } int main() { cin>>n; int x,y; for(int i=1;i<=n;i++) { cin>>x>>y; tree[i].l=x; tree[i].r=y; } dfs(1);cout<<endl; afs(1);cout<<endl; cfs(1); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- WDK驱动调试问题点滴 2020-04-21
- 螺旋矩阵问题 2020-04-18
- 用C++实现:完美的代价 2020-04-15
- 用C++实现:FJ的字符串打印 2020-04-04
- 递归函数使用动态数组遇到的问题 2020-03-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash