Java实现 蓝桥杯VIP 算法训练 FBI树
2023-09-14 08:58:17 时间
问题描述
我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。
FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:
1)T的根结点为R,其类型与串S的类型相同;
2)若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2。
现在给定一个长度为2N的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。
输入格式
第一行是一个整数N(0 <= N <= 10),第二行是一个长度为2N的“01”串。
输出格式
包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。
样例输入
3
10001011
样例输出
IBFBBBFIBFIIIFF
数据规模和约定
对于40%的数据,N <= 2;
对于全部的数据,N <= 10。
注:
[1] 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个根结点的左子树和右子树。
[2] 后序遍历:后序遍历是深度优先遍历二叉树的一种方法,它的递归定义是:先后序遍历左子树,再后序遍历右子树,最后访问根。
import java.util.Scanner;
public class FBI树 {
public static char fff(String xx) {
if(xx.length() == 1) {
if(xx.charAt(0) == '0') {
System.out.print('B');
return 'B';
}
else {
System.out.print('I');
return 'I';
}
}else {
char left = fff(xx.substring(0, xx.length()/2));
char right = fff(xx.substring(xx.length()/2));
if(left == 'B' && right == 'B') {
System.out.print('B');
return 'B';
}else if(left == 'I' && right == 'I') {
System.out.print('I');
return 'I';
}else {
System.out.print('F');
return 'F';
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
String xx = input.next();
fff(xx);
}
}
相关文章
- java 怎样卸载一个类_Java 动态卸载类[通俗易懂]
- java calendar 日期实现不断加一天
- java 随机数算法_Java随机数算法原理与实现方法实例详解
- java笛卡尔积算法_Java 笛卡尔积算法的简单实现
- 【说站】java动态代理的原理
- java验证手机号正则表达式_Java使用正则表达式验证手机号和电话号码的方法「建议收藏」
- java——抽象类和接口有什么区别
- Java算法大全_java贪心算法几个经典例子
- jediscluster.set_java.lang.throwable
- JAVA外文参考文献_java参考文献近五年
- 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )
- JAVA支持HTTP断点续传详解编程语言
- Java与MySQL的实现协同(java和mysql)
- 运行参数Linux 下修改 Java 运行参数的指南(linux修改java)
- Java问题-java进程占用内存过高,排查原因详解编程语言
- 在Linux下搭建完美的Java开发环境(linux搭建java开发环境)
- Java程序更新MySQL记录的实践(java更新mysql)
- 实现Redis中Java实现自动失效数据(redisjava过期)
- 垃圾回收机制标题:Redis中Java过期垃圾回收机制研究(redisjava过期)
- 使用Java轻松读取Redis数据 – 一步一步指南!(java读取redis)
- 数据库以Java运行环境构建基于Oracle的数据库(java创建oracle)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)
- java反射应用详细介绍
- 使用java自带des加密算法实现文件加密和字符串加密