Java 算法 FBI树
目录标题
- 题目描述
- 解题思路
- 代码
题目描述
我们可以把由“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”串。
输入样例:
3
10001011
输出
输出描述:
包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。
输出样例:
IBFBBBFIBFIIIFF
HINT:时间限制:1.0s 内存限制:256.0MB
对于40%的数据,N <= 2;
对于全部的数据,N <= 10。
注:
[1] 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个根结点的左子树和右子树。
[2] 后序遍历:后序遍历是深度优先遍历二叉树的一种方法,它的递归定义是:先后序遍历左子树,再后序遍历右子树,最后访问根。
解题思路
输入的字符串为最低层,一共有m+1层,先从最底层开始两个一组分左右进行判断,每两个判断完就判断其的根,依次从最底层到最后一层就行判断就行了。
代码
import java.util.Scanner;public class Main {public static char fbi(String n){if (n.length()==1){//只有一个时if (n.charAt(0)=='0'){//若为0输出BSystem.out.print('B');return 'B';}else {//其余的输出ISystem.out.print('I');return 'I';}}else {char left=fbi(n.substring(0,n.length()/2));//左树 递归到只有两位再判断char right=fbi(n.substring(n.length()/2));//右树 右边同理 先判断左边if (left=='B'&&right=='B'){//都为0就输出BSystem.out.print('B');return 'B';}else if (left=='I'&&right=='I'){//都为1输出ISystem.out.print('I');return 'I';}else {System.out.print('F');//有0也有1的话输出Freturn 'F';}}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int m=scanner.nextInt();String n=scanner.next();fbi(n);//调用递归函数}
}
Java 算法 FBI树相关推荐
- 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)
题目要求 P1087题目链接 分析 所谓的"FBI树",其实就是一种二叉树,最后的结果也无非就是二叉树的后序遍历序列. 所以,考察的知识点就是--二叉树基本算法的灵活运用. 本题关 ...
- [Java] 蓝桥杯ALGO-27 算法训练 FBI树
问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...
- 蓝桥杯 ALGO-27 算法训练 FBI树 Java版
问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...
- Java实现 蓝桥杯VIP 算法训练 FBI树
问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...
- Java递归子集算法(树状结构)的逻辑和实例代码实现 @杨章隐
Java递归算法(树状结构)的逻辑和实例 1.应用场景: 递归算法作为一个经常使用的算法,无论在API开发还是计算文件夹都是比较常用的, 在api开发过程中我们经常遇到需要返回树状结构的json 例如 ...
- 【Java算法之dfs 与bfs详解】
下次再也不鸽了(つಥ㉨ಥ)つ 我发誓,真的!!! Java算法之dfs 与bfs 1. dfs 1.1 dfs递归 2. bfs 1. bfs常见两类问题 1.1==是否==有路径问题 1.2最短路径 ...
- 18723 FBI树
18723 FBI树 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 Description 我们可以把由"0"和&qu ...
- Luogu P1087 FBI树
P1087 FBI树 题目描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串, ...
- java算法----排序----(6)希尔排序(最小增量排序)
1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...
最新文章
- GraphQL and Relay 浅析
- cannot resolve symbol r_64位ret2_dl_runtime_resolve模版题以及踩坑记录
- ASIHTTPRequest的环境配置和使用示例
- 学习Vue.js实战(一)
- mod auth mysql_Apache使用mysql认证用户
- 结构设计模式 - 适配器设计模式
- 计算机审计的概念的论文,论文:浅谈计算机审计中的数据分析
- Android:Touch和Click的区别
- php 设为首页 收藏_如何在网站上添加“设为首页”“加入收藏”
- Network 第九篇 - 双机热备-HSRP
- C语言基础教程篇之作用域规则
- 如何在 FaceTime 通话中共享您的屏幕?
- ElasticSearch 核心概念
- Spring和Mybatis整合-原生dao开发
- 模糊综合评价模型 ——第四部分,三级模糊综合评价模型应用:例题5,陶瓷厂六种产品销量的评判
- python 实现文字识别提取
- 学校计算机社团都干些什么,学校计算机社团工作计划
- 恒生电子笔试、面试经历
- 众言科技SVP郭晓波做客东南大学:选对池塘钓大鱼 | 校企互通
- (附源码)SSM网络故障报修系统 毕业设计 291146
热门文章
- Intel Core Enhanced Core架构/微架构/流水线 (6) - 指令预译码/指令队列/指令译码
- Android中VectorDrawable与SVG
- SPH(光滑粒子流体动力学)流体模拟实现四:各向异性(Anisotropic)表面光滑(2)
- 删除苹果自带软件后果_ghost explorer工具怎么删除ghost自带软件【详细教程】
- 六级核心词汇pdf_人民日报总结的500个四六级【核心词汇】,祝你一次必过!
- iphone微信电话不弹出_iPhone快速分享电话号码的方法!
- css div中文字位置_计算机二级Web(4):CSS基础 (上)
- UE4 Packaging and Cooking Games
- vivo6.0系统怎么样不用root激活XPOSED框架的方法
- Laravel 使用 scout 集成 elasticsearch 做全文搜索