洛谷:P1087 FBI树 P1030 求先序排列 P1305 新二叉树
至于为啥把这三个题放到一起,大概是因为洛谷的试炼场吧,三道树的水题,首先要理解
先序中序后序遍历方法。
fbi树由于数量小,在递归每个区间时,暴力跑一遍区间里的数,看看是否有0和1。至于递归的方法,二分递归就行。
新二叉树就是现根据题意建树,然后求先序遍历时看一下子节点不是‘*’不是才继续向下走
求先序遍历就是用地贵的方式实现,从后序遍历我们可以找出根节点,从中序遍历我们可以找到左右子树。
- /*FBI树*/
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define maxn 56281
- using namespace std;
- int n;
- char nam[maxn];
- int qq[maxn];
- void build(int l,int r)
- {
- int mid=(l+r)/;
- if(l!=r)
- {
- build(l,mid);
- build(mid+,r);
- }
- int n0=,n1=;
- for(int i=l;i<=r;i++)
- {
- if(qq[i]==)n1++;
- if(qq[i]==)n0++;
- if(n1&&n0)
- {
- printf("F");
- return;
- }
- }
- printf(n1==?"B":"I");
- }
- int main()
- {
- scanf("%d",&n);
- scanf("%s",nam);
- int len=strlen(nam);
- for(int i=;i<=len;i++)
- {
- qq[i]=nam[i-]-'';
- }
- build(,len);
- return ;
- }
- /*新二叉树*/
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- struct root
- {
- char father;
- char rc;
- char lc;
- root()
- {
- father='?';
- lc='?';
- rc='?';
- }
- }tree[];
- void dfs(char x)
- {
- printf("%c",x);
- if(tree[x].lc!='*')dfs(tree[x].lc);
- if(tree[x].rc!='*')dfs(tree[x].rc);
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- char a,b,c;
- cin>>a>>b>>c;
- tree[a].lc=b;
- tree[a].rc=c;
- tree[b].father=a;
- tree[c].father=a;
- }
- for(int i=;i<=;i++)
- {
- if(tree[i].father=='?'&&tree[i].lc!='?'&&tree[i].rc!='?')
- {
- dfs(i);
- break;
- }
- }
- return ;
- }
- /*求先序遍历*/
- #include<cstdio>
- #include<iostream>
- #include<string>
- using namespace std;
- string a,b;
- void qla(int ln,int rn,int l,int r)
- {
- int place=a.find(b[r]);
- cout<<b[r];
- if(place>ln)qla(ln,place-,l,place-ln+l-);//两棵子树
- if(place<rn)qla(place+,rn,place-ln+l,r-);
- }
- int main()
- {
- cin>>a>>b;
- int len=a.size();
- qla(,len-,,len-);
- return ;
- }
- /*
- BADC
- BDCA
- */
洛谷:P1087 FBI树 P1030 求先序排列 P1305 新二叉树的更多相关文章
- P1030 求先序排列 P1305 新二叉树
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度\le 8≤8). 输入输出格式 输入格式: 22行,均为大写字母组成的字符串,表示一棵二叉树的中序与 ...
- 洛谷P1087 FBI树
P1087 FBI树题解: 看到这个题,我想到了线段树!(毕竟刚搞完st表...) 当然,题解中有位大佬也用的线段树,但是当时看的时候我看见了9个if,当场去世. 那么这是一个不用暴力的线段树,且简单 ...
- 洛谷1087 FBI树 解题报告
洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...
- P1030 求先序排列 /// 二叉树的遍历
题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...
- 洛谷 P1030 求先序排列 Label:None
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- 二叉树的遍历 &【NOIP2001普及组】& 洛谷 P1030 求先序排列
题目链接 https://www.luogu.org/problemnew/show/P1030 模板题 先讲一下二叉树的遍历 二叉树的遍历 分类 性质 求法 分为三类: 先序遍历(PreOrder) ...
- 洛谷P1030求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8. 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输 ...
- 洛谷 P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- 洛谷——P1030 求先序排列
https://www.luogu.org/problem/show?pid=1030#sub 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...
随机推荐
- 第三篇 makefile的伪目标
我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下: 1.make将makefile的目标认为是一个文件: 2.make解释器比较目标文件和依赖文件的新旧关系,决定是否 ...
- python opencv —— 背景提取(MOG、KNN)、识别与检测(Haar Cascade)
注意 opencv 的坐标轴,x 轴向右,和 width 对应,y 轴向下,和 height 对应: 1. MOG2 与 KNN MOG:Mixture of Gaussian import cv2 ...
- linux配置禁用启用IPv6
IPv6被认为是IPv4的替代产品,它用来解决现有IPv4地址空间即将耗尽的问题.但目前,开启IPv6可能会导致一些问题.因此有时我们需要关闭IPv6.下面是IPv6的关闭方法应该适用于所有主流的Li ...
- 2243: [SDOI2011]染色(LCT)
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 10909 Solved: 4216[Submit][Statu ...
- 【HAOI2010】订货
可以DP也可以是费用流,然而被我用非常简单的DP破了[开心] 原题: 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定 ...
- 【liunx】端口号的占用情况查看
Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...
- 关联容器set的用法(关联容器,红黑树,)
set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复.// 2017/7/23号 好像set容器里面只能装一个元素 #include<io ...
- Linux中常用的函数
1.devm_kzalloc() 函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device ...
- Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
[root@node1 ~]# hive which: no hbase in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi ...
- memsql 基本完全免费了
一个很好的消息是memesql 从6.7 版本开始,对于用户来说已经可以免费使用了(ha 以及安全功能),只是目前有一个 限制是集群内存最大可以使用的是128G,但是一般来说已经够用. 参考资料 ht ...