zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 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”串。
    输出格式
      包括一行,这一行只包含一个字符串,即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);
    	}
    
    }
    
    
  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948514.html
Copyright © 2011-2022 走看看