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

先序中序后序遍历方法。

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 新二叉树的更多相关文章

  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. android系列9.LinearLayout学习

    <!-- <LinearLayout> 线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的 --> <LinearLayout xmlns:android=& ...

  2. ubuntu16.04 下 NVIDIA GTX1050ti 显卡驱动 PPA安装

    本文参考资料链接: http://blog.csdn.net/10km/article/details/61191230 前几天在京东商城上花了6999元买了台笔记本(惠普(HP)暗影精灵II代Pro ...

  3. S3TC IAP15F2K61S2点亮一个发光二极管keil和stc-isp软件操作

    1.安装破解软件 2.打开STC-ISP,找到头文件,选择保存文件 3.找到keil的安装目录,keil/C51/INC 并保存 4.在桌面新建文件夹 5.打开keil 6.找到在桌面上新建的文件夹 ...

  4. convert CAN frame

    前言 最近了解了一些socket can的知识点,本文主要介绍如何将数据转换为CAN报文,前提是已经确定CAN的传输协议. 本文使用的CAN报文共有22条,这些报文共用一个can id,每条报文使用序 ...

  5. centos安装redis +RedisDesktopManager连接redis

    1.先到Redis官网(redis.io)下载redis安装包 wget http://download.redis.io/releases/redis-5.0.4.tar.gztar xzf red ...

  6. maven quick start

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-a ...

  7. POJ3669解题报告(bfs)

    POJ3669http://poj.org/problem?id=3669 很明显是一道bfs的题目 由于陨石的降临具有时刻性,所以地图是随时间变化的, 所以可以使用结构体来存储陨石下落的时刻以及位置 ...

  8. xhan/qqbot试用

    xhan/qqbot试用 啥是qqbot?基于WebQQ协议的QQ机器人.命令行工具,Hubot支持! 怎样安装?首先要安装CoffeeScript windows:安装nodejs:主页上就有下载C ...

  9. 【转】每天一个linux命令目录

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列 ...

  10. linux mutt的安装和使用

    首先介绍一下mutt这个软件,它是一款基于文字界面的邮件客户端,非常小巧,但功能强大,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件附件. 我只讲它很小的一部分功能,因为我 ...