目录标题

  • 题目描述
  • 解题思路
  • 代码

题目描述

我们可以把由“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树相关推荐

  1. 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)

    题目要求 P1087题目链接 分析 所谓的"FBI树",其实就是一种二叉树,最后的结果也无非就是二叉树的后序遍历序列. 所以,考察的知识点就是--二叉树基本算法的灵活运用. 本题关 ...

  2. [Java] 蓝桥杯ALGO-27 算法训练 FBI树

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  3. 蓝桥杯 ALGO-27 算法训练 FBI树 Java版

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  4. Java实现 蓝桥杯VIP 算法训练 FBI树

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  5. Java递归子集算法(树状结构)的逻辑和实例代码实现 @杨章隐

    Java递归算法(树状结构)的逻辑和实例 1.应用场景: 递归算法作为一个经常使用的算法,无论在API开发还是计算文件夹都是比较常用的, 在api开发过程中我们经常遇到需要返回树状结构的json 例如 ...

  6. 【Java算法之dfs 与bfs详解】

    下次再也不鸽了(つಥ㉨ಥ)つ 我发誓,真的!!! Java算法之dfs 与bfs 1. dfs 1.1 dfs递归 2. bfs 1. bfs常见两类问题 1.1==是否==有路径问题 1.2最短路径 ...

  7. 18723 FBI树

    18723 FBI树 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 Description 我们可以把由"0"和&qu ...

  8. Luogu P1087 FBI树

    P1087 FBI树 题目描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串, ...

  9. java算法----排序----(6)希尔排序(最小增量排序)

    1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...

最新文章

  1. GraphQL and Relay 浅析
  2. cannot resolve symbol r_64位ret2_dl_runtime_resolve模版题以及踩坑记录
  3. ASIHTTPRequest的环境配置和使用示例
  4. 学习Vue.js实战(一)
  5. mod auth mysql_Apache使用mysql认证用户
  6. 结构设计模式 - 适配器设计模式
  7. 计算机审计的概念的论文,论文:浅谈计算机审计中的数据分析
  8. Android:Touch和Click的区别
  9. php 设为首页 收藏_如何在网站上添加“设为首页”“加入收藏”
  10. Network 第九篇 - 双机热备-HSRP
  11. C语言基础教程篇之作用域规则
  12. 如何在 FaceTime 通话中共享您的屏幕?
  13. ElasticSearch 核心概念
  14. Spring和Mybatis整合-原生dao开发
  15. 模糊综合评价模型 ——第四部分,三级模糊综合评价模型应用:例题5,陶瓷厂六种产品销量的评判
  16. python 实现文字识别提取
  17. 学校计算机社团都干些什么,学校计算机社团工作计划
  18. 恒生电子笔试、面试经历
  19. 众言科技SVP郭晓波做客东南大学:选对池塘钓大鱼 | 校企互通
  20. (附源码)SSM网络故障报修系统 毕业设计 291146

热门文章

  1. Intel Core Enhanced Core架构/微架构/流水线 (6) - 指令预译码/指令队列/指令译码
  2. Android中VectorDrawable与SVG
  3. SPH(光滑粒子流体动力学)流体模拟实现四:各向异性(Anisotropic)表面光滑(2)
  4. 删除苹果自带软件后果_ghost explorer工具怎么删除ghost自带软件【详细教程】
  5. 六级核心词汇pdf_人民日报总结的500个四六级【核心词汇】,祝你一次必过!
  6. iphone微信电话不弹出_iPhone快速分享电话号码的方法!
  7. css div中文字位置_计算机二级Web(4):CSS基础 (上)
  8. UE4 Packaging and Cooking Games
  9. vivo6.0系统怎么样不用root激活XPOSED框架的方法
  10. Laravel 使用 scout 集成 elasticsearch 做全文搜索