至于为啥把这三个题放到一起,大概是因为洛谷的试炼场吧,三道树的水题,首先要理解

先序中序后序遍历方法。

fbi树由于数量小,在递归每个区间时,暴力跑一遍区间里的数,看看是否有0和1。至于递归的方法,二分递归就行。

新二叉树就是现根据题意建树,然后求先序遍历时看一下子节点不是‘*’不是才继续向下走

求先序遍历就是用地贵的方式实现,从后序遍历我们可以找出根节点,从中序遍历我们可以找到左右子树。

  1. /*FBI树*/
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #define maxn 56281
  7. using namespace std;
  8. int n;
  9. char nam[maxn];
  10. int qq[maxn];
  11. void build(int l,int r)
  12. {
  13. int mid=(l+r)/;
  14. if(l!=r)
  15. {
  16. build(l,mid);
  17. build(mid+,r);
  18. }
  19. int n0=,n1=;
  20. for(int i=l;i<=r;i++)
  21. {
  22. if(qq[i]==)n1++;
  23. if(qq[i]==)n0++;
  24. if(n1&&n0)
  25. {
  26. printf("F");
  27. return;
  28. }
  29. }
  30. printf(n1==?"B":"I");
  31. }
  32. int main()
  33. {
  34. scanf("%d",&n);
  35. scanf("%s",nam);
  36. int len=strlen(nam);
  37. for(int i=;i<=len;i++)
  38. {
  39. qq[i]=nam[i-]-'';
  40. }
  41. build(,len);
  42. return ;
  43. }
  1. /*新二叉树*/
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<algorithm>
  5. using namespace std;
  6. struct root
  7. {
  8. char father;
  9. char rc;
  10. char lc;
  11. root()
  12. {
  13. father='?';
  14. lc='?';
  15. rc='?';
  16. }
  17. }tree[];
  18. void dfs(char x)
  19. {
  20. printf("%c",x);
  21. if(tree[x].lc!='*')dfs(tree[x].lc);
  22. if(tree[x].rc!='*')dfs(tree[x].rc);
  23. }
  24. int main()
  25. {
  26. int n;
  27. scanf("%d",&n);
  28. for(int i=;i<=n;i++)
  29. {
  30. char a,b,c;
  31. cin>>a>>b>>c;
  32. tree[a].lc=b;
  33. tree[a].rc=c;
  34. tree[b].father=a;
  35. tree[c].father=a;
  36. }
  37. for(int i=;i<=;i++)
  38. {
  39. if(tree[i].father=='?'&&tree[i].lc!='?'&&tree[i].rc!='?')
  40. {
  41. dfs(i);
  42. break;
  43. }
  44. }
  45. return ;
  46. }
  1. /*求先序遍历*/
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<string>
  5. using namespace std;
  6. string a,b;
  7. void qla(int ln,int rn,int l,int r)
  8. {
  9. int place=a.find(b[r]);
  10. cout<<b[r];
  11. if(place>ln)qla(ln,place-,l,place-ln+l-);//两棵子树
  12. if(place<rn)qla(place+,rn,place-ln+l,r-);
  13. }
  14. int main()
  15. {
  16. cin>>a>>b;
  17. int len=a.size();
  18. qla(,len-,,len-);
  19. return ;
  20. }
  21. /*
  22. BADC
  23. BDCA
  24. */

洛谷:P1087 FBI树 P1030 求先序排列 P1305 新二叉树的更多相关文章

  1. P1030 求先序排列 P1305 新二叉树

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度\le 8≤8). 输入输出格式 输入格式: 22行,均为大写字母组成的字符串,表示一棵二叉树的中序与 ...

  2. 洛谷P1087 FBI树

    P1087 FBI树题解: 看到这个题,我想到了线段树!(毕竟刚搞完st表...) 当然,题解中有位大佬也用的线段树,但是当时看的时候我看见了9个if,当场去世. 那么这是一个不用暴力的线段树,且简单 ...

  3. 洛谷1087 FBI树 解题报告

    洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...

  4. P1030 求先序排列 /// 二叉树的遍历

    题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...

  5. 洛谷 P1030 求先序排列 Label:None

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  6. 二叉树的遍历 &【NOIP2001普及组】& 洛谷 P1030 求先序排列

    题目链接 https://www.luogu.org/problemnew/show/P1030 模板题 先讲一下二叉树的遍历 二叉树的遍历 分类 性质 求法 分为三类: 先序遍历(PreOrder) ...

  7. 洛谷P1030求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8. 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输 ...

  8. 洛谷 P1030 求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  9. 洛谷——P1030 求先序排列

    https://www.luogu.org/problem/show?pid=1030#sub 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...

随机推荐

  1. 第三篇 makefile的伪目标

    我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下:    1.make将makefile的目标认为是一个文件:    2.make解释器比较目标文件和依赖文件的新旧关系,决定是否 ...

  2. python opencv —— 背景提取(MOG、KNN)、识别与检测(Haar Cascade)

    注意 opencv 的坐标轴,x 轴向右,和 width 对应,y 轴向下,和 height 对应: 1. MOG2 与 KNN MOG:Mixture of Gaussian import cv2 ...

  3. linux配置禁用启用IPv6

    IPv6被认为是IPv4的替代产品,它用来解决现有IPv4地址空间即将耗尽的问题.但目前,开启IPv6可能会导致一些问题.因此有时我们需要关闭IPv6.下面是IPv6的关闭方法应该适用于所有主流的Li ...

  4. 2243: [SDOI2011]染色(LCT)

    2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 10909  Solved: 4216[Submit][Statu ...

  5. 【HAOI2010】订货

    可以DP也可以是费用流,然而被我用非常简单的DP破了[开心] 原题: 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定 ...

  6. 【liunx】端口号的占用情况查看

    Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...

  7. 关联容器set的用法(关联容器,红黑树,)

    set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复.// 2017/7/23号 好像set容器里面只能装一个元素 #include<io ...

  8. Linux中常用的函数

    1.devm_kzalloc() 函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device ...

  9. 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 ...

  10. memsql 基本完全免费了

    一个很好的消息是memesql 从6.7 版本开始,对于用户来说已经可以免费使用了(ha 以及安全功能),只是目前有一个 限制是集群内存最大可以使用的是128G,但是一般来说已经够用. 参考资料 ht ...